mirror of
https://github.com/fluencelabs/lazy-snark
synced 2025-06-26 13:11:49 +00:00
add fluence mock back
This commit is contained in:
15
backend_fluence/.idea/backend_fluence.iml
generated
Normal file
15
backend_fluence/.idea/backend_fluence.iml
generated
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="JAVA_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||||
|
<exclude-output />
|
||||||
|
<content url="file://$MODULE_DIR$">
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/examples" isTestSource="false" />
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/tests" isTestSource="true" />
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/benches" isTestSource="true" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/target" />
|
||||||
|
</content>
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
</module>
|
8
backend_fluence/.idea/modules.xml
generated
Normal file
8
backend_fluence/.idea/modules.xml
generated
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/backend_fluence.iml" filepath="$PROJECT_DIR$/.idea/backend_fluence.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
225
backend_fluence/.idea/workspace.xml
generated
Normal file
225
backend_fluence/.idea/workspace.xml
generated
Normal file
@ -0,0 +1,225 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="CargoProjects">
|
||||||
|
<cargoProject FILE="$PROJECT_DIR$/Cargo.toml" />
|
||||||
|
</component>
|
||||||
|
<component name="ChangeListManager">
|
||||||
|
<list default="true" id="74666de5-8813-4f2f-a569-570f6755fddf" name="Default Changelist" comment="" />
|
||||||
|
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
||||||
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
|
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||||
|
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||||
|
</component>
|
||||||
|
<component name="FileEditorManager">
|
||||||
|
<leaf>
|
||||||
|
<file pinned="false" current-in-tab="false">
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/request_response.rs">
|
||||||
|
<provider selected="true" editor-type-id="text-editor" />
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
|
<file pinned="false" current-in-tab="true">
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/proof_manager.rs">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="-1575">
|
||||||
|
<caret line="3" column="26" selection-start-line="3" selection-start-column="26" selection-end-line="3" selection-end-column="26" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
|
<file pinned="false" current-in-tab="false">
|
||||||
|
<entry file="file://$USER_HOME$/.cargo/registry/src/github.com-1ecc6299db9ec823/bellman_ce-0.3.0/src/lib.rs">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="75">
|
||||||
|
<caret line="5" column="17" lean-forward="true" selection-start-line="5" selection-start-column="17" selection-end-line="5" selection-end-column="17" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
|
<file pinned="false" current-in-tab="false">
|
||||||
|
<entry file="file://$PROJECT_DIR$/Cargo.toml">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="375">
|
||||||
|
<caret line="25" column="11" selection-start-line="25" selection-start-column="11" selection-end-line="25" selection-end-column="11" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
|
<file pinned="false" current-in-tab="false">
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/lib.rs">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="30">
|
||||||
|
<caret line="2" column="21" selection-start-line="2" selection-start-column="21" selection-end-line="2" selection-end-column="21" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
|
</leaf>
|
||||||
|
</component>
|
||||||
|
<component name="IdeDocumentHistory">
|
||||||
|
<option name="CHANGED_PATHS">
|
||||||
|
<list>
|
||||||
|
<option value="$PROJECT_DIR$/Cargo.toml" />
|
||||||
|
<option value="$PROJECT_DIR$/src/proof_manager.rs" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
<component name="MacroExpansionManager">
|
||||||
|
<option name="directoryName" value="yNaPhLBk" />
|
||||||
|
</component>
|
||||||
|
<component name="ProjectFrameBounds" extendedState="7">
|
||||||
|
<option name="x" value="67" />
|
||||||
|
<option name="y" value="25" />
|
||||||
|
<option name="width" value="767" />
|
||||||
|
<option name="height" value="875" />
|
||||||
|
</component>
|
||||||
|
<component name="ProjectView">
|
||||||
|
<navigator proportions="" version="1">
|
||||||
|
<foldersAlwaysOnTop value="true" />
|
||||||
|
</navigator>
|
||||||
|
<panes>
|
||||||
|
<pane id="Scope" />
|
||||||
|
<pane id="ProjectPane">
|
||||||
|
<subPane>
|
||||||
|
<expand>
|
||||||
|
<path>
|
||||||
|
<item name="backend_fluence" type="b2602c69:ProjectViewProjectNode" />
|
||||||
|
<item name="backend_fluence" type="462c0819:PsiDirectoryNode" />
|
||||||
|
</path>
|
||||||
|
<path>
|
||||||
|
<item name="backend_fluence" type="b2602c69:ProjectViewProjectNode" />
|
||||||
|
<item name="backend_fluence" type="462c0819:PsiDirectoryNode" />
|
||||||
|
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||||
|
</path>
|
||||||
|
</expand>
|
||||||
|
<select />
|
||||||
|
</subPane>
|
||||||
|
</pane>
|
||||||
|
<pane id="PackagesPane" />
|
||||||
|
</panes>
|
||||||
|
</component>
|
||||||
|
<component name="PropertiesComponent">
|
||||||
|
<property name="last_opened_file_path" value="$PROJECT_DIR$/Cargo.toml" />
|
||||||
|
<property name="org.rust.cargo.project.model.PROJECT_DISCOVERY" value="true" />
|
||||||
|
</component>
|
||||||
|
<component name="RunDashboard">
|
||||||
|
<option name="ruleStates">
|
||||||
|
<list>
|
||||||
|
<RuleState>
|
||||||
|
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
|
||||||
|
</RuleState>
|
||||||
|
<RuleState>
|
||||||
|
<option name="name" value="StatusDashboardGroupingRule" />
|
||||||
|
</RuleState>
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
<component name="RunManager" selected="Cargo Command.Expand proof::proof_manager">
|
||||||
|
<configuration name="Expand proof::proof_manager" type="CargoCommandRunConfiguration" factoryName="Cargo Command" temporary="true">
|
||||||
|
<option name="channel" value="DEFAULT" />
|
||||||
|
<option name="command" value="expand --lib --color=always --theme=GitHub --tests proof_manager" />
|
||||||
|
<option name="allFeatures" value="false" />
|
||||||
|
<option name="nocapture" value="false" />
|
||||||
|
<option name="backtrace" value="SHORT" />
|
||||||
|
<option name="workingDirectory" value="file://$PROJECT_DIR$" />
|
||||||
|
<envs />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
<configuration name="Install cargo-expand" type="CargoCommandRunConfiguration" factoryName="Cargo Command" temporary="true">
|
||||||
|
<option name="channel" value="DEFAULT" />
|
||||||
|
<option name="command" value="install --force cargo-expand" />
|
||||||
|
<option name="allFeatures" value="false" />
|
||||||
|
<option name="nocapture" value="false" />
|
||||||
|
<option name="backtrace" value="SHORT" />
|
||||||
|
<option name="workingDirectory" value="file://$PROJECT_DIR$" />
|
||||||
|
<envs />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
<recent_temporary>
|
||||||
|
<list>
|
||||||
|
<item itemvalue="Cargo Command.Expand proof::proof_manager" />
|
||||||
|
<item itemvalue="Cargo Command.Install cargo-expand" />
|
||||||
|
</list>
|
||||||
|
</recent_temporary>
|
||||||
|
</component>
|
||||||
|
<component name="RustProjectSettings">
|
||||||
|
<option name="toolchainHomeDirectory" value="$USER_HOME$/.cargo/bin" />
|
||||||
|
</component>
|
||||||
|
<component name="SvnConfiguration">
|
||||||
|
<configuration />
|
||||||
|
</component>
|
||||||
|
<component name="TaskManager">
|
||||||
|
<task active="true" id="Default" summary="Default task">
|
||||||
|
<changelist id="74666de5-8813-4f2f-a569-570f6755fddf" name="Default Changelist" comment="" />
|
||||||
|
<created>1561232010348</created>
|
||||||
|
<option name="number" value="Default" />
|
||||||
|
<option name="presentableId" value="Default" />
|
||||||
|
<updated>1561232010348</updated>
|
||||||
|
</task>
|
||||||
|
<servers />
|
||||||
|
</component>
|
||||||
|
<component name="ToolWindowManager">
|
||||||
|
<frame x="67" y="25" width="1533" height="875" extended-state="7" />
|
||||||
|
<layout>
|
||||||
|
<window_info id="Image Layers" />
|
||||||
|
<window_info id="Designer" />
|
||||||
|
<window_info id="UI Designer" />
|
||||||
|
<window_info id="Capture Tool" />
|
||||||
|
<window_info id="Favorites" side_tool="true" />
|
||||||
|
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.24949563" />
|
||||||
|
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
|
||||||
|
<window_info anchor="bottom" id="Version Control" />
|
||||||
|
<window_info anchor="bottom" id="Terminal" visible="true" weight="0.328877" />
|
||||||
|
<window_info anchor="bottom" id="Event Log" side_tool="true" />
|
||||||
|
<window_info anchor="bottom" id="Message" order="0" />
|
||||||
|
<window_info anchor="bottom" id="Find" order="1" />
|
||||||
|
<window_info anchor="bottom" id="Run" order="2" weight="0.328877" />
|
||||||
|
<window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
|
||||||
|
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
|
||||||
|
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
|
||||||
|
<window_info anchor="bottom" id="TODO" order="6" />
|
||||||
|
<window_info anchor="right" id="Palette" />
|
||||||
|
<window_info anchor="right" id="Theme Preview" />
|
||||||
|
<window_info anchor="right" id="Maven" />
|
||||||
|
<window_info anchor="right" id="Capture Analysis" />
|
||||||
|
<window_info anchor="right" id="Cargo" />
|
||||||
|
<window_info anchor="right" id="Palette	" />
|
||||||
|
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
|
||||||
|
<window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
|
||||||
|
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
|
||||||
|
</layout>
|
||||||
|
</component>
|
||||||
|
<component name="editorHistoryManager">
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/request_response.rs">
|
||||||
|
<provider selected="true" editor-type-id="text-editor" />
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/Cargo.toml">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="375">
|
||||||
|
<caret line="25" column="11" selection-start-line="25" selection-start-column="11" selection-end-line="25" selection-end-column="11" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/lib.rs">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="30">
|
||||||
|
<caret line="2" column="21" selection-start-line="2" selection-start-column="21" selection-end-line="2" selection-end-column="21" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$USER_HOME$/.cargo/registry/src/github.com-1ecc6299db9ec823/bellman_ce-0.3.0/src/lib.rs">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="75">
|
||||||
|
<caret line="5" column="17" lean-forward="true" selection-start-line="5" selection-start-column="17" selection-end-line="5" selection-end-column="17" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/proof_manager.rs">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="-1575">
|
||||||
|
<caret line="3" column="26" selection-start-line="3" selection-start-column="26" selection-end-line="3" selection-end-column="26" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</component>
|
||||||
|
</project>
|
469
backend_fluence/Cargo.lock
generated
Normal file
469
backend_fluence/Cargo.lock
generated
Normal file
@ -0,0 +1,469 @@
|
|||||||
|
# This file is automatically @generated by Cargo.
|
||||||
|
# It is not intended for manual editing.
|
||||||
|
[[package]]
|
||||||
|
name = "arrayvec"
|
||||||
|
version = "0.4.10"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "autocfg"
|
||||||
|
version = "0.1.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "bellman_ce"
|
||||||
|
version = "0.3.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"bit-vec 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"crossbeam 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"pairing_ce 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "bit-vec"
|
||||||
|
version = "0.4.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "byteorder"
|
||||||
|
version = "1.3.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "cfg-if"
|
||||||
|
version = "0.1.9"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "crossbeam"
|
||||||
|
version = "0.7.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "crossbeam-channel"
|
||||||
|
version = "0.3.8"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "crossbeam-deque"
|
||||||
|
version = "0.7.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "crossbeam-epoch"
|
||||||
|
version = "0.7.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "crossbeam-queue"
|
||||||
|
version = "0.1.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "crossbeam-utils"
|
||||||
|
version = "0.6.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ff_ce"
|
||||||
|
version = "0.6.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"ff_derive_ce 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ff_derive_ce"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"num-bigint 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"serde_derive 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"syn 0.14.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "fluence"
|
||||||
|
version = "0.1.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"fluence-sdk-macro 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"fluence-sdk-main 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "fluence-sdk-macro"
|
||||||
|
version = "0.1.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"fluence-sdk-main 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "fluence-sdk-main"
|
||||||
|
version = "0.1.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "fuchsia-cprng"
|
||||||
|
version = "0.1.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "futures"
|
||||||
|
version = "0.1.27"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "futures-cpupool"
|
||||||
|
version = "0.1.8"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "hex"
|
||||||
|
version = "0.3.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "itoa"
|
||||||
|
version = "0.4.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "lazy_static"
|
||||||
|
version = "1.3.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "libc"
|
||||||
|
version = "0.2.58"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "linked-hash-map"
|
||||||
|
version = "0.5.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "log"
|
||||||
|
version = "0.4.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "memoffset"
|
||||||
|
version = "0.2.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "nodrop"
|
||||||
|
version = "0.1.13"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "num-bigint"
|
||||||
|
version = "0.2.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "num-integer"
|
||||||
|
version = "0.1.41"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "num-traits"
|
||||||
|
version = "0.2.8"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "num_cpus"
|
||||||
|
version = "1.10.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "pairing_ce"
|
||||||
|
version = "0.17.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"ff_ce 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"serde_derive 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "proc-macro2"
|
||||||
|
version = "0.4.27"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "proof"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"bellman_ce 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"fluence 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"linked-hash-map 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "quote"
|
||||||
|
version = "0.6.11"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rand"
|
||||||
|
version = "0.4.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rand_core"
|
||||||
|
version = "0.3.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rand_core"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rdrand"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ryu"
|
||||||
|
version = "0.2.7"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "scopeguard"
|
||||||
|
version = "0.3.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "serde"
|
||||||
|
version = "1.0.88"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"serde_derive 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "serde_derive"
|
||||||
|
version = "1.0.88"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "serde_json"
|
||||||
|
version = "1.0.38"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"ryu 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "smallvec"
|
||||||
|
version = "0.6.10"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "syn"
|
||||||
|
version = "0.14.9"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "syn"
|
||||||
|
version = "0.15.26"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "unicode-xid"
|
||||||
|
version = "0.1.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "winapi"
|
||||||
|
version = "0.3.7"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "winapi-i686-pc-windows-gnu"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "winapi-x86_64-pc-windows-gnu"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
"checksum arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "92c7fb76bc8826a8b33b4ee5bb07a247a81e76764ab4d55e8f73e3a4d8808c71"
|
||||||
|
"checksum autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "0e49efa51329a5fd37e7c79db4621af617cd4e3e5bc224939808d076077077bf"
|
||||||
|
"checksum bellman_ce 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "642cd8f539e838802c6a0d1756f5bf3985385a7d538fc7950589b676586537fe"
|
||||||
|
"checksum bit-vec 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "02b4ff8b16e6076c3e14220b39fbc1fabb6737522281a388998046859400895f"
|
||||||
|
"checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5"
|
||||||
|
"checksum cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33"
|
||||||
|
"checksum crossbeam 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b14492071ca110999a20bf90e3833406d5d66bfd93b4e52ec9539025ff43fe0d"
|
||||||
|
"checksum crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0f0ed1a4de2235cabda8558ff5840bffb97fcb64c97827f354a451307df5f72b"
|
||||||
|
"checksum crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b18cd2e169ad86297e6bc0ad9aa679aee9daa4f19e8163860faf7c164e4f5a71"
|
||||||
|
"checksum crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "04c9e3102cc2d69cd681412141b390abd55a362afc1540965dad0ad4d34280b4"
|
||||||
|
"checksum crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b"
|
||||||
|
"checksum crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f8306fcef4a7b563b76b7dd949ca48f52bc1141aa067d2ea09565f3e2652aa5c"
|
||||||
|
"checksum ff_ce 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8f6edceb5dc64db5e46acb519af5d994b004bc150230498527c3f9e55c94c842"
|
||||||
|
"checksum ff_derive_ce 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "189b37f93ec30f72d7420f1e6f2f07031ed0245073ab46c02b57fba696f4365a"
|
||||||
|
"checksum fluence 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "60cb68f8345b46e3bab0f9cb5a041dad4e0ad944a27d4a89b312db8d5f01cadd"
|
||||||
|
"checksum fluence-sdk-macro 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "d25c41f9afe101ca24ebc41a58ca9e1c7a9627cf5249211776881fdf954b14ed"
|
||||||
|
"checksum fluence-sdk-main 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "a2e09744c4895d07bafdc275d2da9c3a61edae9790f00283aa1fd48661d12506"
|
||||||
|
"checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba"
|
||||||
|
"checksum futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)" = "a2037ec1c6c1c4f79557762eab1f7eae1f64f6cb418ace90fae88f0942b60139"
|
||||||
|
"checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4"
|
||||||
|
"checksum hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "805026a5d0141ffc30abb3be3173848ad46a1b1664fe632428479619a3644d77"
|
||||||
|
"checksum itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1306f3464951f30e30d12373d31c79fbd52d236e5e896fd92f96ec7babbbe60b"
|
||||||
|
"checksum lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14"
|
||||||
|
"checksum libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "6281b86796ba5e4366000be6e9e18bf35580adf9e63fbe2294aadb587613a319"
|
||||||
|
"checksum linked-hash-map 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "70fb39025bc7cdd76305867c4eccf2f2dcf6e9a57f5b21a93e1c2d86cd03ec9e"
|
||||||
|
"checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6"
|
||||||
|
"checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3"
|
||||||
|
"checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945"
|
||||||
|
"checksum num-bigint 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "57450397855d951f1a41305e54851b1a7b8f5d2e349543a02a2effe25459f718"
|
||||||
|
"checksum num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)" = "b85e541ef8255f6cf42bbfe4ef361305c6c135d10919ecc26126c4e5ae94bc09"
|
||||||
|
"checksum num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "6ba9a427cfca2be13aa6f6403b0b7e7368fe982bfa16fccc450ce74c46cd9b32"
|
||||||
|
"checksum num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcef43580c035376c0705c42792c294b66974abbfd2789b511784023f71f3273"
|
||||||
|
"checksum pairing_ce 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cce626fb8f97e304423451d63e29b7f5882de5cfe79925ffc4a32cf4c243f40f"
|
||||||
|
"checksum proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)" = "4d317f9caece796be1980837fd5cb3dfec5613ebdb04ad0956deea83ce168915"
|
||||||
|
"checksum quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)" = "cdd8e04bd9c52e0342b406469d494fcb033be4bdbe5c606016defbb1681411e1"
|
||||||
|
"checksum rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293"
|
||||||
|
"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b"
|
||||||
|
"checksum rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d0e7a549d590831370895ab7ba4ea0c1b6b011d106b5ff2da6eee112615e6dc0"
|
||||||
|
"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2"
|
||||||
|
"checksum ryu 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "eb9e9b8cde282a9fe6a42dd4681319bfb63f121b8a8ee9439c6f4107e58a46f7"
|
||||||
|
"checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27"
|
||||||
|
"checksum serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)" = "9f301d728f2b94c9a7691c90f07b0b4e8a4517181d9461be94c04bddeb4bd850"
|
||||||
|
"checksum serde_derive 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)" = "beed18e6f5175aef3ba670e57c60ef3b1b74d250d962a26604bff4c80e970dd4"
|
||||||
|
"checksum serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)" = "27dce848e7467aa0e2fcaf0a413641499c0b745452aaca1194d24dedde9e13c9"
|
||||||
|
"checksum smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ab606a9c5e214920bb66c458cd7be8ef094f813f20fe77a54cc7dbfff220d4b7"
|
||||||
|
"checksum syn 0.14.9 (registry+https://github.com/rust-lang/crates.io-index)" = "261ae9ecaa397c42b960649561949d69311f08eeaea86a65696e6e46517cf741"
|
||||||
|
"checksum syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)" = "f92e629aa1d9c827b2bb8297046c1ccffc57c99b947a680d3ccff1f136a3bee9"
|
||||||
|
"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc"
|
||||||
|
"checksum winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f10e386af2b13e47c89e7236a7a14a086791a2b88ebad6df9bf42040195cf770"
|
||||||
|
"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
||||||
|
"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
27
backend_fluence/Cargo.toml
Normal file
27
backend_fluence/Cargo.toml
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
[package]
|
||||||
|
name = "proof"
|
||||||
|
version = "0.1.0"
|
||||||
|
authors = ["Fluence Labs"]
|
||||||
|
publish = false
|
||||||
|
description = "Trustless off-chain zk-proof verification"
|
||||||
|
edition = "2018"
|
||||||
|
|
||||||
|
[lib]
|
||||||
|
name = "proof"
|
||||||
|
path = "src/lib.rs"
|
||||||
|
crate-type = ["cdylib"]
|
||||||
|
|
||||||
|
[profile.release]
|
||||||
|
debug = false
|
||||||
|
lto = true
|
||||||
|
opt-level = "z"
|
||||||
|
panic = "abort"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
|
serde_json = "1.0.38"
|
||||||
|
linked-hash-map = "0.5.1"
|
||||||
|
fluence = { version = "0.1.5", features = ["wasm_logger"] }
|
||||||
|
|
||||||
|
bellman_ce = "0.3.0"
|
||||||
|
|
1
backend_fluence/rust-toolchain
Normal file
1
backend_fluence/rust-toolchain
Normal file
@ -0,0 +1 @@
|
|||||||
|
nightly
|
19
backend_fluence/src/error_type.rs
Normal file
19
backend_fluence/src/error_type.rs
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2018 Fluence Labs Limited
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
use std::error::Error;
|
||||||
|
|
||||||
|
pub type AppResult<T> = ::std::result::Result<T, Box<Error>>;
|
46
backend_fluence/src/lib.rs
Normal file
46
backend_fluence/src/lib.rs
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
mod error_type;
|
||||||
|
mod proof_manager;
|
||||||
|
mod request_response;
|
||||||
|
|
||||||
|
use crate::error_type::AppResult;
|
||||||
|
use crate::proof_manager::ProofManager;
|
||||||
|
use crate::request_response::{Request, Response};
|
||||||
|
|
||||||
|
use fluence::sdk::*;
|
||||||
|
use serde_json::Value;
|
||||||
|
use std::cell::RefCell;
|
||||||
|
|
||||||
|
thread_local! {
|
||||||
|
static PROOF_MANAGER: RefCell<ProofManager> = RefCell::new(ProofManager::new());
|
||||||
|
}
|
||||||
|
|
||||||
|
fn do_request(req: String) -> AppResult<Value> {
|
||||||
|
let request: Request = serde_json::from_str(req.as_str())?;
|
||||||
|
|
||||||
|
match request {
|
||||||
|
|
||||||
|
Request::Verify {
|
||||||
|
proof_id,
|
||||||
|
public_par,
|
||||||
|
proof,
|
||||||
|
} => PROOF_MANAGER.with(|gm| gm.borrow_mut().verify(proof_id, public_par, proof)),
|
||||||
|
|
||||||
|
Request::Check {
|
||||||
|
proof_id,
|
||||||
|
} => PROOF_MANAGER.with(|gm| gm.borrow_mut().check(proof_id))
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[invocation_handler]
|
||||||
|
fn main(req: String) -> String {
|
||||||
|
match do_request(req) {
|
||||||
|
Ok(res) => res.to_string(),
|
||||||
|
Err(err) => {
|
||||||
|
let response = Response::Error {
|
||||||
|
message: err.to_string(),
|
||||||
|
};
|
||||||
|
serde_json::to_string(&response).unwrap()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
359
backend_fluence/src/proof_manager.rs
Normal file
359
backend_fluence/src/proof_manager.rs
Normal file
@ -0,0 +1,359 @@
|
|||||||
|
use crate::error_type::AppResult;
|
||||||
|
use crate::request_response::Response;
|
||||||
|
|
||||||
|
use bellman_ce::groth16::*;
|
||||||
|
|
||||||
|
use linked_hash_map::LinkedHashMap;
|
||||||
|
use serde_json::Value;
|
||||||
|
|
||||||
|
pub struct ProofManager {
|
||||||
|
// map from job id to verify status
|
||||||
|
proofs: LinkedHashMap<u64, u8>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ProofManager {
|
||||||
|
|
||||||
|
pub fn new() -> Self {
|
||||||
|
ProofManager {
|
||||||
|
proofs: LinkedHashMap::new(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn verify(&mut self, proof_id: u64, public_par: [u64; 5], proof: [u64; 8]) -> AppResult<Value> {
|
||||||
|
|
||||||
|
// verify mock
|
||||||
|
let result: u8 = 1;
|
||||||
|
//test_xordemo();
|
||||||
|
|
||||||
|
// update proof status
|
||||||
|
self.proofs.insert(proof_id, result);
|
||||||
|
|
||||||
|
let response = Response::Verify {
|
||||||
|
result : result,
|
||||||
|
};
|
||||||
|
|
||||||
|
serde_json::to_value(response).map_err(Into::into)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
pub fn check(&self, proof_id: u64) -> AppResult<Value> {
|
||||||
|
let status = self.proof_status(proof_id)?;
|
||||||
|
let response = Response::Check { verifed: status };
|
||||||
|
|
||||||
|
serde_json::to_value(response).map_err(Into::into)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn proof_status(&self, proof_id: u64) -> AppResult<u8> {
|
||||||
|
let status = self
|
||||||
|
.proofs
|
||||||
|
.get(&proof_id)
|
||||||
|
.ok_or_else(|| format!("Proof with id {} wasn't found", proof_id))?;
|
||||||
|
|
||||||
|
Ok(*status)
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
fn test_xordemo() {
|
||||||
|
let g1 = Fr::one();
|
||||||
|
let g2 = Fr::one();
|
||||||
|
let alpha = Fr::from_str("48577").unwrap();
|
||||||
|
let beta = Fr::from_str("22580").unwrap();
|
||||||
|
let gamma = Fr::from_str("53332").unwrap();
|
||||||
|
let delta = Fr::from_str("5481").unwrap();
|
||||||
|
let tau = Fr::from_str("3673").unwrap();
|
||||||
|
|
||||||
|
let params = {
|
||||||
|
let c = XORDemo::<DummyEngine> {
|
||||||
|
a: None,
|
||||||
|
b: None,
|
||||||
|
_marker: PhantomData
|
||||||
|
};
|
||||||
|
|
||||||
|
generate_parameters(
|
||||||
|
c,
|
||||||
|
g1,
|
||||||
|
g2,
|
||||||
|
alpha,
|
||||||
|
beta,
|
||||||
|
gamma,
|
||||||
|
delta,
|
||||||
|
tau
|
||||||
|
).unwrap()
|
||||||
|
};
|
||||||
|
|
||||||
|
// This will synthesize the constraint system:
|
||||||
|
//
|
||||||
|
// public inputs: a_0 = 1, a_1 = c
|
||||||
|
// aux inputs: a_2 = a, a_3 = b
|
||||||
|
// constraints:
|
||||||
|
// (a_0 - a_2) * (a_2) = 0
|
||||||
|
// (a_0 - a_3) * (a_3) = 0
|
||||||
|
// (a_2 + a_2) * (a_3) = (a_2 + a_3 - a_1)
|
||||||
|
// (a_0) * 0 = 0
|
||||||
|
// (a_1) * 0 = 0
|
||||||
|
|
||||||
|
// The evaluation domain is 8. The H query should
|
||||||
|
// have 7 elements (it's a quotient polynomial)
|
||||||
|
assert_eq!(7, params.h.len());
|
||||||
|
|
||||||
|
let mut root_of_unity = Fr::root_of_unity();
|
||||||
|
|
||||||
|
// We expect this to be a 2^10 root of unity
|
||||||
|
assert_eq!(Fr::one(), root_of_unity.pow(&[1 << 10]));
|
||||||
|
|
||||||
|
// Let's turn it into a 2^3 root of unity.
|
||||||
|
root_of_unity = root_of_unity.pow(&[1 << 7]);
|
||||||
|
assert_eq!(Fr::one(), root_of_unity.pow(&[1 << 3]));
|
||||||
|
assert_eq!(Fr::from_str("20201").unwrap(), root_of_unity);
|
||||||
|
|
||||||
|
// Let's compute all the points in our evaluation domain.
|
||||||
|
let mut points = Vec::with_capacity(8);
|
||||||
|
for i in 0..8 {
|
||||||
|
points.push(root_of_unity.pow(&[i]));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Let's compute t(tau) = (tau - p_0)(tau - p_1)...
|
||||||
|
// = tau^8 - 1
|
||||||
|
let mut t_at_tau = tau.pow(&[8]);
|
||||||
|
t_at_tau.sub_assign(&Fr::one());
|
||||||
|
{
|
||||||
|
let mut tmp = Fr::one();
|
||||||
|
for p in &points {
|
||||||
|
let mut term = tau;
|
||||||
|
term.sub_assign(p);
|
||||||
|
tmp.mul_assign(&term);
|
||||||
|
}
|
||||||
|
assert_eq!(tmp, t_at_tau);
|
||||||
|
}
|
||||||
|
|
||||||
|
// We expect our H query to be 7 elements of the form...
|
||||||
|
// {tau^i t(tau) / delta}
|
||||||
|
let delta_inverse = delta.inverse().unwrap();
|
||||||
|
let gamma_inverse = gamma.inverse().unwrap();
|
||||||
|
{
|
||||||
|
let mut coeff = delta_inverse;
|
||||||
|
coeff.mul_assign(&t_at_tau);
|
||||||
|
|
||||||
|
let mut cur = Fr::one();
|
||||||
|
for h in params.h.iter() {
|
||||||
|
let mut tmp = cur;
|
||||||
|
tmp.mul_assign(&coeff);
|
||||||
|
|
||||||
|
assert_eq!(*h, tmp);
|
||||||
|
|
||||||
|
cur.mul_assign(&tau);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// The density of the IC query is 2 (2 inputs)
|
||||||
|
assert_eq!(2, params.vk.ic.len());
|
||||||
|
|
||||||
|
// The density of the L query is 2 (2 aux variables)
|
||||||
|
assert_eq!(2, params.l.len());
|
||||||
|
|
||||||
|
// The density of the A query is 4 (each variable is in at least one A term)
|
||||||
|
assert_eq!(4, params.a.len());
|
||||||
|
|
||||||
|
// The density of the B query is 2 (two variables are in at least one B term)
|
||||||
|
assert_eq!(2, params.b_g1.len());
|
||||||
|
assert_eq!(2, params.b_g2.len());
|
||||||
|
|
||||||
|
/*
|
||||||
|
Lagrange interpolation polynomials in our evaluation domain:
|
||||||
|
|
||||||
|
,-------------------------------. ,-------------------------------. ,-------------------------------.
|
||||||
|
| A TERM | | B TERM | | C TERM |
|
||||||
|
`-------------------------------. `-------------------------------' `-------------------------------'
|
||||||
|
| a_0 | a_1 | a_2 | a_3 | | a_0 | a_1 | a_2 | a_3 | | a_0 | a_1 | a_2 | a_3 |
|
||||||
|
| 1 | 0 | 64512 | 0 | | 0 | 0 | 1 | 0 | | 0 | 0 | 0 | 0 |
|
||||||
|
| 1 | 0 | 0 | 64512 | | 0 | 0 | 0 | 1 | | 0 | 0 | 0 | 0 |
|
||||||
|
| 0 | 0 | 2 | 0 | | 0 | 0 | 0 | 1 | | 0 | 64512 | 1 | 1 |
|
||||||
|
| 1 | 0 | 0 | 0 | | 0 | 0 | 0 | 0 | | 0 | 0 | 0 | 0 |
|
||||||
|
| 0 | 1 | 0 | 0 | | 0 | 0 | 0 | 0 | | 0 | 0 | 0 | 0 |
|
||||||
|
`-------'-------'-------'-------' `-------'-------'-------'-------' `-------'-------'-------'-------'
|
||||||
|
|
||||||
|
Example for u_0:
|
||||||
|
|
||||||
|
sage: r = 64513
|
||||||
|
sage: Fr = GF(r)
|
||||||
|
sage: omega = (Fr(5)^63)^(2^7)
|
||||||
|
sage: tau = Fr(3673)
|
||||||
|
sage: R.<x> = PolynomialRing(Fr, 'x')
|
||||||
|
sage: def eval(tau, c0, c1, c2, c3, c4):
|
||||||
|
....: p = R.lagrange_polynomial([(omega^0, c0), (omega^1, c1), (omega^2, c2), (omega^3, c3), (omega^4, c4), (omega^5, 0), (omega^6, 0), (omega^7, 0)])
|
||||||
|
....: return p.substitute(tau)
|
||||||
|
sage: eval(tau, 1, 1, 0, 1, 0)
|
||||||
|
59158
|
||||||
|
*/
|
||||||
|
|
||||||
|
let u_i = [59158, 48317, 21767, 10402].iter().map(|e| {
|
||||||
|
Fr::from_str(&format!("{}", e)).unwrap()
|
||||||
|
}).collect::<Vec<Fr>>();
|
||||||
|
let v_i = [0, 0, 60619, 30791].iter().map(|e| {
|
||||||
|
Fr::from_str(&format!("{}", e)).unwrap()
|
||||||
|
}).collect::<Vec<Fr>>();
|
||||||
|
let w_i = [0, 23320, 41193, 41193].iter().map(|e| {
|
||||||
|
Fr::from_str(&format!("{}", e)).unwrap()
|
||||||
|
}).collect::<Vec<Fr>>();
|
||||||
|
|
||||||
|
for (u, a) in u_i.iter()
|
||||||
|
.zip(¶ms.a[..])
|
||||||
|
{
|
||||||
|
assert_eq!(u, a);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (v, b) in v_i.iter()
|
||||||
|
.filter(|&&e| e != Fr::zero())
|
||||||
|
.zip(¶ms.b_g1[..])
|
||||||
|
{
|
||||||
|
assert_eq!(v, b);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (v, b) in v_i.iter()
|
||||||
|
.filter(|&&e| e != Fr::zero())
|
||||||
|
.zip(¶ms.b_g2[..])
|
||||||
|
{
|
||||||
|
assert_eq!(v, b);
|
||||||
|
}
|
||||||
|
|
||||||
|
for i in 0..4 {
|
||||||
|
let mut tmp1 = beta;
|
||||||
|
tmp1.mul_assign(&u_i[i]);
|
||||||
|
|
||||||
|
let mut tmp2 = alpha;
|
||||||
|
tmp2.mul_assign(&v_i[i]);
|
||||||
|
|
||||||
|
tmp1.add_assign(&tmp2);
|
||||||
|
tmp1.add_assign(&w_i[i]);
|
||||||
|
|
||||||
|
if i < 2 {
|
||||||
|
// Check the correctness of the IC query elements
|
||||||
|
tmp1.mul_assign(&gamma_inverse);
|
||||||
|
|
||||||
|
assert_eq!(tmp1, params.vk.ic[i]);
|
||||||
|
} else {
|
||||||
|
// Check the correctness of the L query elements
|
||||||
|
tmp1.mul_assign(&delta_inverse);
|
||||||
|
|
||||||
|
assert_eq!(tmp1, params.l[i - 2]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check consistency of the other elements
|
||||||
|
assert_eq!(alpha, params.vk.alpha_g1);
|
||||||
|
assert_eq!(beta, params.vk.beta_g1);
|
||||||
|
assert_eq!(beta, params.vk.beta_g2);
|
||||||
|
assert_eq!(gamma, params.vk.gamma_g2);
|
||||||
|
assert_eq!(delta, params.vk.delta_g1);
|
||||||
|
assert_eq!(delta, params.vk.delta_g2);
|
||||||
|
|
||||||
|
let pvk = prepare_verifying_key(¶ms.vk);
|
||||||
|
|
||||||
|
let r = Fr::from_str("27134").unwrap();
|
||||||
|
let s = Fr::from_str("17146").unwrap();
|
||||||
|
|
||||||
|
let proof = {
|
||||||
|
let c = XORDemo {
|
||||||
|
a: Some(true),
|
||||||
|
b: Some(false),
|
||||||
|
_marker: PhantomData
|
||||||
|
};
|
||||||
|
|
||||||
|
create_proof(
|
||||||
|
c,
|
||||||
|
¶ms,
|
||||||
|
r,
|
||||||
|
s
|
||||||
|
).unwrap()
|
||||||
|
};
|
||||||
|
|
||||||
|
// A(x) =
|
||||||
|
// a_0 * (44865*x^7 + 56449*x^6 + 44865*x^5 + 8064*x^4 + 3520*x^3 + 56449*x^2 + 3520*x + 40321) +
|
||||||
|
// a_1 * (8064*x^7 + 56449*x^6 + 8064*x^5 + 56449*x^4 + 8064*x^3 + 56449*x^2 + 8064*x + 56449) +
|
||||||
|
// a_2 * (16983*x^7 + 24192*x^6 + 63658*x^5 + 56449*x^4 + 16983*x^3 + 24192*x^2 + 63658*x + 56449) +
|
||||||
|
// a_3 * (5539*x^7 + 27797*x^6 + 6045*x^5 + 56449*x^4 + 58974*x^3 + 36716*x^2 + 58468*x + 8064) +
|
||||||
|
{
|
||||||
|
// proof A = alpha + A(tau) + delta * r
|
||||||
|
let mut expected_a = delta;
|
||||||
|
expected_a.mul_assign(&r);
|
||||||
|
expected_a.add_assign(&alpha);
|
||||||
|
expected_a.add_assign(&u_i[0]); // a_0 = 1
|
||||||
|
expected_a.add_assign(&u_i[1]); // a_1 = 1
|
||||||
|
expected_a.add_assign(&u_i[2]); // a_2 = 1
|
||||||
|
// a_3 = 0
|
||||||
|
assert_eq!(proof.a, expected_a);
|
||||||
|
}
|
||||||
|
|
||||||
|
// B(x) =
|
||||||
|
// a_0 * (0) +
|
||||||
|
// a_1 * (0) +
|
||||||
|
// a_2 * (56449*x^7 + 56449*x^6 + 56449*x^5 + 56449*x^4 + 56449*x^3 + 56449*x^2 + 56449*x + 56449) +
|
||||||
|
// a_3 * (31177*x^7 + 44780*x^6 + 21752*x^5 + 42255*x^3 + 35861*x^2 + 33842*x + 48385)
|
||||||
|
{
|
||||||
|
// proof B = beta + B(tau) + delta * s
|
||||||
|
let mut expected_b = delta;
|
||||||
|
expected_b.mul_assign(&s);
|
||||||
|
expected_b.add_assign(&beta);
|
||||||
|
expected_b.add_assign(&v_i[0]); // a_0 = 1
|
||||||
|
expected_b.add_assign(&v_i[1]); // a_1 = 1
|
||||||
|
expected_b.add_assign(&v_i[2]); // a_2 = 1
|
||||||
|
// a_3 = 0
|
||||||
|
assert_eq!(proof.b, expected_b);
|
||||||
|
}
|
||||||
|
|
||||||
|
// C(x) =
|
||||||
|
// a_0 * (0) +
|
||||||
|
// a_1 * (27797*x^7 + 56449*x^6 + 36716*x^5 + 8064*x^4 + 27797*x^3 + 56449*x^2 + 36716*x + 8064) +
|
||||||
|
// a_2 * (36716*x^7 + 8064*x^6 + 27797*x^5 + 56449*x^4 + 36716*x^3 + 8064*x^2 + 27797*x + 56449) +
|
||||||
|
// a_3 * (36716*x^7 + 8064*x^6 + 27797*x^5 + 56449*x^4 + 36716*x^3 + 8064*x^2 + 27797*x + 56449)
|
||||||
|
//
|
||||||
|
// If A * B = C at each point in the domain, then the following polynomial...
|
||||||
|
// P(x) = A(x) * B(x) - C(x)
|
||||||
|
// = 49752*x^14 + 13914*x^13 + 29243*x^12 + 27227*x^11 + 62362*x^10 + 35703*x^9 + 4032*x^8 + 14761*x^6 + 50599*x^5 + 35270*x^4 + 37286*x^3 + 2151*x^2 + 28810*x + 60481
|
||||||
|
//
|
||||||
|
// ... should be divisible by t(x), producing the quotient polynomial:
|
||||||
|
// h(x) = P(x) / t(x)
|
||||||
|
// = 49752*x^6 + 13914*x^5 + 29243*x^4 + 27227*x^3 + 62362*x^2 + 35703*x + 4032
|
||||||
|
{
|
||||||
|
let mut expected_c = Fr::zero();
|
||||||
|
|
||||||
|
// A * s
|
||||||
|
let mut tmp = proof.a;
|
||||||
|
tmp.mul_assign(&s);
|
||||||
|
expected_c.add_assign(&tmp);
|
||||||
|
|
||||||
|
// B * r
|
||||||
|
let mut tmp = proof.b;
|
||||||
|
tmp.mul_assign(&r);
|
||||||
|
expected_c.add_assign(&tmp);
|
||||||
|
|
||||||
|
// delta * r * s
|
||||||
|
let mut tmp = delta;
|
||||||
|
tmp.mul_assign(&r);
|
||||||
|
tmp.mul_assign(&s);
|
||||||
|
expected_c.sub_assign(&tmp);
|
||||||
|
|
||||||
|
// L query answer
|
||||||
|
// a_2 = 1, a_3 = 0
|
||||||
|
expected_c.add_assign(¶ms.l[0]);
|
||||||
|
|
||||||
|
// H query answer
|
||||||
|
for (i, coeff) in [5040, 11763, 10755, 63633, 128, 9747, 8739].iter().enumerate() {
|
||||||
|
let coeff = Fr::from_str(&format!("{}", coeff)).unwrap();
|
||||||
|
|
||||||
|
let mut tmp = params.h[i];
|
||||||
|
tmp.mul_assign(&coeff);
|
||||||
|
expected_c.add_assign(&tmp);
|
||||||
|
}
|
||||||
|
|
||||||
|
assert_eq!(expected_c, proof.c);
|
||||||
|
}
|
||||||
|
|
||||||
|
assert!(verify_proof(
|
||||||
|
&pvk,
|
||||||
|
&proof,
|
||||||
|
&[Fr::one()]
|
||||||
|
).unwrap());
|
||||||
|
}*/
|
||||||
|
|
||||||
|
}
|
23
backend_fluence/src/request_response.rs
Normal file
23
backend_fluence/src/request_response.rs
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize)]
|
||||||
|
#[serde(tag = "action")]
|
||||||
|
pub enum Request {
|
||||||
|
Verify {
|
||||||
|
proof_id: u64,
|
||||||
|
public_par: [u64; 5],
|
||||||
|
proof: [u64; 8],
|
||||||
|
},
|
||||||
|
Check {
|
||||||
|
proof_id: u64,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize)]
|
||||||
|
#[serde(untagged)]
|
||||||
|
pub enum Response {
|
||||||
|
Verify { result: u8 },
|
||||||
|
Check { verifed: u8 },
|
||||||
|
Error { message: String },
|
||||||
|
}
|
130
backend_fluence/src/tests.rs
Normal file
130
backend_fluence/src/tests.rs
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2018 Fluence Labs Limited
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
use crate::request_response::{Request, Response};
|
||||||
|
use crate::main;
|
||||||
|
|
||||||
|
// TODO: add more tests
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn correct_bets() {
|
||||||
|
let response = Response::Join { player_id: 0 };
|
||||||
|
assert_eq!(
|
||||||
|
main(create_join_request()),
|
||||||
|
serde_json::to_string(&response).unwrap()
|
||||||
|
);
|
||||||
|
|
||||||
|
let response = Response::Join { player_id: 1 };
|
||||||
|
assert_eq!(
|
||||||
|
main(create_join_request()),
|
||||||
|
serde_json::to_string(&response).unwrap()
|
||||||
|
);
|
||||||
|
|
||||||
|
let response = Response::Bet {
|
||||||
|
outcome: 6,
|
||||||
|
player_balance: 85,
|
||||||
|
};
|
||||||
|
assert_eq!(
|
||||||
|
main(create_bet_json(0, 1, 15)),
|
||||||
|
serde_json::to_string(&response).unwrap()
|
||||||
|
);
|
||||||
|
|
||||||
|
let response = Response::Bet {
|
||||||
|
outcome: 4,
|
||||||
|
player_balance: 85,
|
||||||
|
};
|
||||||
|
assert_eq!(
|
||||||
|
main(create_bet_json(1, 1, 15)),
|
||||||
|
serde_json::to_string(&response).unwrap()
|
||||||
|
);
|
||||||
|
|
||||||
|
let response = Response::Bet {
|
||||||
|
outcome: 6,
|
||||||
|
player_balance: 510,
|
||||||
|
};
|
||||||
|
assert_eq!(
|
||||||
|
main(create_bet_json(0, 6, 85)),
|
||||||
|
serde_json::to_string(&response).unwrap()
|
||||||
|
);
|
||||||
|
|
||||||
|
let response = Response::Bet {
|
||||||
|
outcome: 2,
|
||||||
|
player_balance: 0,
|
||||||
|
};
|
||||||
|
assert_eq!(
|
||||||
|
main(create_bet_json(1, 1, 85)),
|
||||||
|
serde_json::to_string(&response).unwrap()
|
||||||
|
);
|
||||||
|
|
||||||
|
let response = Response::GetBalance {
|
||||||
|
player_balance: 510,
|
||||||
|
};
|
||||||
|
assert_eq!(
|
||||||
|
main(create_get_balance_json(0)),
|
||||||
|
serde_json::to_string(&response).unwrap()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn incorrect_bets() {
|
||||||
|
let response = Response::Join { player_id: 0 };
|
||||||
|
assert_eq!(
|
||||||
|
main(create_join_request()),
|
||||||
|
serde_json::to_string(&response).unwrap()
|
||||||
|
);
|
||||||
|
|
||||||
|
let response = Response::Error {
|
||||||
|
message: "Incorrect placement, please choose number from 1 to 6".to_string(),
|
||||||
|
};
|
||||||
|
assert_eq!(
|
||||||
|
main(create_bet_json(0, 7, 15)),
|
||||||
|
serde_json::to_string(&response).unwrap()
|
||||||
|
);
|
||||||
|
|
||||||
|
let response = Response::Error {
|
||||||
|
message: "Player with id 1 wasn\'t found".to_string(),
|
||||||
|
};
|
||||||
|
assert_eq!(
|
||||||
|
main(create_bet_json(1, 1, 0)),
|
||||||
|
serde_json::to_string(&response).unwrap()
|
||||||
|
);
|
||||||
|
|
||||||
|
let response = Response::Error {
|
||||||
|
message: "Player hasn\'t enough money: player\'s current balance is 100 while the bet is 4294967295".to_string()
|
||||||
|
};
|
||||||
|
assert_eq!(
|
||||||
|
main(create_bet_json(0, 6, std::u32::MAX)),
|
||||||
|
serde_json::to_string(&response).unwrap()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn create_join_request() -> String {
|
||||||
|
let request = Request::Join;
|
||||||
|
serde_json::to_value(request).unwrap().to_string()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn create_bet_json(player_id: u64, placement: u8, bet_amount: u32) -> String {
|
||||||
|
let request = Request::Bet {
|
||||||
|
player_id,
|
||||||
|
placement,
|
||||||
|
bet_amount,
|
||||||
|
};
|
||||||
|
serde_json::to_value(request).unwrap().to_string()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn create_get_balance_json(player_id: u64) -> String {
|
||||||
|
let request = Request::GetBalance { player_id };
|
||||||
|
serde_json::to_value(request).unwrap().to_string()
|
||||||
|
}
|
1
backend_fluence/target/.rustc_info.json
Normal file
1
backend_fluence/target/.rustc_info.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"rustc_fingerprint":6818883262078044197,"outputs":{"10627914300373605183":["___.wasm\nlib___.rlib\n___.wasm\nlib___.a\n/home/drygin/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu\ndebug_assertions\nproc_macro\ntarget_arch=\"wasm32\"\ntarget_endian=\"little\"\ntarget_env=\"\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"cas\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"unknown\"\ntarget_pointer_width=\"32\"\ntarget_vendor=\"unknown\"\n","warning: dropping unsupported crate type `dylib` for target `wasm32-unknown-unknown`\n\nwarning: dropping unsupported crate type `proc-macro` for target `wasm32-unknown-unknown`\n\n"],"1164083562126845933":["rustc 1.37.0-nightly (1d9981f04 2019-06-20)\nbinary: rustc\ncommit-hash: 1d9981f04e8957345205c07adc2742886420ac37\ncommit-date: 2019-06-20\nhost: x86_64-unknown-linux-gnu\nrelease: 1.37.0-nightly\nLLVM version: 8.0\n",""],"4476964694761187371":["___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/home/drygin/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu\ndebug_assertions\nproc_macro\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"mmx\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"cas\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_thread_local\ntarget_vendor=\"unknown\"\nunix\n",""]},"successes":{}}
|
0
backend_fluence/target/release/.cargo-lock
Normal file
0
backend_fluence/target/release/.cargo-lock
Normal file
@ -0,0 +1 @@
|
|||||||
|
6497b1f2db9812e1
|
@ -0,0 +1 @@
|
|||||||
|
{"rustc":17438372465142736060,"features":"[]","target":10088282520713642473,"profile":4949808943094707866,"path":12380252750843949509,"deps":[],"local":[{"Precalculated":"0.4.10"}],"rustflags":[],"metadata":5019420986621020735}
|
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
@ -0,0 +1 @@
|
|||||||
|
ee066d42cf52f8bb
|
@ -0,0 +1 @@
|
|||||||
|
{"rustc":17438372465142736060,"features":"[]","target":8574161726611873773,"profile":4949808943094707866,"path":15835372934462311219,"deps":[],"local":[{"Precalculated":"0.1.4"}],"rustflags":[],"metadata":13102859075309379048}
|
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
@ -0,0 +1 @@
|
|||||||
|
0405a1ca14bfc5e5
|
@ -0,0 +1 @@
|
|||||||
|
{"rustc":17438372465142736060,"features":"[]","target":8574161726611873773,"profile":4949808943094707866,"path":2469199396198540723,"deps":[],"local":[{"Precalculated":"0.1.2"}],"rustflags":[],"metadata":13102859075309379048}
|
@ -0,0 +1 @@
|
|||||||
|
155d4eafcaaf9fe3
|
@ -0,0 +1 @@
|
|||||||
|
{"rustc":17438372465142736060,"features":"[\"default\", \"std\"]","target":10088282520713642473,"profile":4949808943094707866,"path":18024365876200736639,"deps":[],"local":[{"Precalculated":"1.3.2"}],"rustflags":[],"metadata":5398730104718078656}
|
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
@ -0,0 +1 @@
|
|||||||
|
8b3888983e582723
|
@ -0,0 +1 @@
|
|||||||
|
{"rustc":17438372465142736060,"features":"[]","target":12396366720307268670,"profile":4949808943094707866,"path":3313339301641277326,"deps":[],"local":[{"Precalculated":"0.1.9"}],"rustflags":[],"metadata":8462187951337715540}
|
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
@ -0,0 +1 @@
|
|||||||
|
24101c1f05b0b753
|
@ -0,0 +1 @@
|
|||||||
|
{"rustc":17438372465142736060,"features":"[]","target":12396366720307268670,"profile":4949808943094707866,"path":3329387309202365057,"deps":[],"local":[{"Precalculated":"0.1.6"}],"rustflags":[],"metadata":8462187951337715540}
|
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
@ -0,0 +1 @@
|
|||||||
|
1f12937c1e0e6af1
|
@ -0,0 +1 @@
|
|||||||
|
{"rustc":17438372465142736060,"features":"[]","target":3953504333963786110,"profile":4949808943094707866,"path":15814056638587464348,"deps":[[1022150872365013179,"quote",false,12751901978222811487],[3079319751161539850,"num_traits",false,5169278642956873791],[5418142424874065103,"serde_derive",false,10315688821016086932],[6836105154299582027,"num_bigint",false,10679222132616124476],[7808672926425867431,"num_integer",false,17597729828703377222],[9513890219804719333,"proc_macro2",false,1932908690471273151],[13104600084864441960,"syn",false,6726479742775167002]],"local":[{"Precalculated":"0.4.0"}],"rustflags":[],"metadata":15665308869745498953}
|
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
@ -0,0 +1 @@
|
|||||||
|
cfb0317a6f75650d
|
@ -0,0 +1 @@
|
|||||||
|
{"rustc":17438372465142736060,"features":"[]","target":12093838401864459520,"profile":4949808943094707866,"path":3559666780974043935,"deps":[[1022150872365013179,"quote",false,12751901978222811487],[2681756356646517209,"fluence_sdk_main",false,10913058012234927007],[5604130868290354501,"syn",false,6712633280079242108],[9513890219804719333,"proc_macro2",false,1932908690471273151]],"local":[{"Precalculated":"0.1.5"}],"rustflags":[],"metadata":17925558187338266424}
|
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
@ -0,0 +1 @@
|
|||||||
|
9b5a02914f0c4249
|
@ -0,0 +1 @@
|
|||||||
|
{"rustc":17438372465142736060,"features":"[]","target":12093838401864459520,"profile":4949808943094707866,"path":3559666780974043935,"deps":[[1022150872365013179,"quote",false,12751901978222811487],[2681756356646517209,"fluence_sdk_main",false,4582629345646691767],[5604130868290354501,"syn",false,6712633280079242108],[9513890219804719333,"proc_macro2",false,1932908690471273151]],"local":[{"Precalculated":"0.1.5"}],"rustflags":[],"metadata":17925558187338266424}
|
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
@ -0,0 +1 @@
|
|||||||
|
9f4b7e3871f87297
|
@ -0,0 +1 @@
|
|||||||
|
{"rustc":17438372465142736060,"features":"[\"export_allocator\", \"wasm_logger\"]","target":8680421693818780226,"profile":4949808943094707866,"path":2600196157632677191,"deps":[[5604130868290354501,"syn",false,6712633280079242108],[6229932798454332776,"log",false,13601064463552850543]],"local":[{"Precalculated":"0.1.5"}],"rustflags":[],"metadata":1001862133673630359}
|
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
@ -0,0 +1 @@
|
|||||||
|
b7458d2c1cc5983f
|
@ -0,0 +1 @@
|
|||||||
|
{"rustc":17438372465142736060,"features":"[\"export_allocator\", \"wasm_logger\"]","target":8680421693818780226,"profile":4949808943094707866,"path":2600196157632677191,"deps":[[5604130868290354501,"syn",false,6712633280079242108],[6229932798454332776,"log",false,13229072488660351249]],"local":[{"Precalculated":"0.1.5"}],"rustflags":[],"metadata":1001862133673630359}
|
@ -0,0 +1 @@
|
|||||||
|
8f2a43c8cd71b848
|
@ -0,0 +1 @@
|
|||||||
|
{"rustc":17438372465142736060,"features":"[\"default\", \"std\"]","target":10088282520713642473,"profile":4949808943094707866,"path":17173603923082875229,"deps":[],"local":[{"Precalculated":"0.2.58"}],"rustflags":[],"metadata":14998826085014762512}
|
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
@ -0,0 +1 @@
|
|||||||
|
6faa416d11b0c0bc
|
@ -0,0 +1 @@
|
|||||||
|
{"rustc":17438372465142736060,"features":"[\"std\"]","target":10961605713333254966,"profile":4949808943094707866,"path":17770213709114441104,"deps":[[15377153837359305676,"cfg_if",false,6032483761929326628]],"local":[{"Precalculated":"0.4.6"}],"rustflags":[],"metadata":11622444542196388843}
|
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
@ -0,0 +1 @@
|
|||||||
|
11397e7a561b97b7
|
@ -0,0 +1 @@
|
|||||||
|
{"rustc":17438372465142736060,"features":"[\"std\"]","target":10961605713333254966,"profile":4949808943094707866,"path":17770213709114441104,"deps":[[3612515264075196208,"cfg_if",false,2533090341289474187]],"local":[{"Precalculated":"0.4.6"}],"rustflags":[],"metadata":11622444542196388843}
|
@ -0,0 +1 @@
|
|||||||
|
fdd22d930eb1c87d
|
@ -0,0 +1 @@
|
|||||||
|
{"rustc":17438372465142736060,"features":"","target":0,"profile":0,"path":0,"deps":[[6836105154299582027,"build_script_build",false,15040177008224960515]],"local":[{"Precalculated":"0.2.2"}],"rustflags":[],"metadata":0}
|
@ -0,0 +1 @@
|
|||||||
|
03003f7e4d71b9d0
|
@ -0,0 +1 @@
|
|||||||
|
{"rustc":17438372465142736060,"features":"[\"default\", \"std\"]","target":10088282520713642473,"profile":4949808943094707866,"path":16386575570645039995,"deps":[],"local":[{"Precalculated":"0.2.2"}],"rustflags":[],"metadata":10601054166942238371}
|
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
@ -0,0 +1 @@
|
|||||||
|
3cd812dcf2373494
|
@ -0,0 +1 @@
|
|||||||
|
{"rustc":17438372465142736060,"features":"[\"default\", \"std\"]","target":6896153037798659203,"profile":4949808943094707866,"path":14411084253800427688,"deps":[[3079319751161539850,"num_traits",false,5169278642956873791],[6836105154299582027,"build_script_build",false,9063688926240035581],[7808672926425867431,"num_integer",false,17597729828703377222]],"local":[{"Precalculated":"0.2.2"}],"rustflags":[],"metadata":10601054166942238371}
|
@ -0,0 +1 @@
|
|||||||
|
1882b59dbeb026b3
|
@ -0,0 +1 @@
|
|||||||
|
{"rustc":17438372465142736060,"features":"","target":0,"profile":0,"path":0,"deps":[[7808672926425867431,"build_script_build",false,11257506235821582536]],"local":[{"RerunIfChanged":{"output":"output","paths":["build.rs"]}}],"rustflags":[],"metadata":0}
|
@ -0,0 +1 @@
|
|||||||
|
c8e8e3d246b23a9c
|
@ -0,0 +1 @@
|
|||||||
|
{"rustc":17438372465142736060,"features":"[\"default\", \"std\"]","target":10088282520713642473,"profile":4949808943094707866,"path":12309556546142548291,"deps":[[3872866040803405014,"autocfg",false,13544666929442916078]],"local":[{"Precalculated":"0.1.41"}],"rustflags":[],"metadata":58200369117550911}
|
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
@ -0,0 +1 @@
|
|||||||
|
461729dd0ab237f4
|
@ -0,0 +1 @@
|
|||||||
|
{"rustc":17438372465142736060,"features":"[\"default\", \"std\"]","target":7800718724727423882,"profile":4949808943094707866,"path":9730492827768336570,"deps":[[3079319751161539850,"num_traits",false,5169278642956873791],[7808672926425867431,"build_script_build",false,12909199714640298520]],"local":[{"Precalculated":"0.1.41"}],"rustflags":[],"metadata":58200369117550911}
|
@ -0,0 +1 @@
|
|||||||
|
4ac63e857627050c
|
@ -0,0 +1 @@
|
|||||||
|
{"rustc":17438372465142736060,"features":"[\"default\", \"std\"]","target":10088282520713642473,"profile":4949808943094707866,"path":4658558127479305261,"deps":[[3872866040803405014,"autocfg",false,13544666929442916078]],"local":[{"Precalculated":"0.2.8"}],"rustflags":[],"metadata":14621636500951049976}
|
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
@ -0,0 +1 @@
|
|||||||
|
3f3075aa89f7bc47
|
@ -0,0 +1 @@
|
|||||||
|
{"rustc":17438372465142736060,"features":"[\"default\", \"std\"]","target":16894502179009968931,"profile":4949808943094707866,"path":12723236698335347771,"deps":[[3079319751161539850,"build_script_build",false,4843304961630950976]],"local":[{"Precalculated":"0.2.8"}],"rustflags":[],"metadata":14621636500951049976}
|
@ -0,0 +1 @@
|
|||||||
|
4056e6a033e03643
|
@ -0,0 +1 @@
|
|||||||
|
{"rustc":17438372465142736060,"features":"","target":0,"profile":0,"path":0,"deps":[[3079319751161539850,"build_script_build",false,866141893333796426]],"local":[{"RerunIfChanged":{"output":"output","paths":["build.rs"]}}],"rustflags":[],"metadata":0}
|
@ -0,0 +1 @@
|
|||||||
|
0db8b037f2fbef4d
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user