From da6f0e717edcd020f6400bdfe620785db327b254 Mon Sep 17 00:00:00 2001 From: Karim Date: Thu, 9 Nov 2023 12:58:00 +0000 Subject: [PATCH] Add near plugins & update near-sdk (#40) * Add near plugins & update near-sdk * Update contract build * Mark field as deprecated & use tag for `eth-types` crate * Update contract build --- .github/workflows/contracts-near.yml | 33 + .gitignore | 1 - nearBridge/Cargo.lock | 1417 ++++++++++++++++++---- nearBridge/Cargo.toml | 20 +- nearBridge/build.sh | 37 +- nearBridge/flags.sh | 7 - nearBridge/res/near_bridge.wasm | Bin 0 -> 382682 bytes nearBridge/rust-toolchain | 2 + nearBridge/src/lib.rs | 145 ++- nearBridge/src/prover.rs | 5 +- nearBridge/src/transfer_to_near_event.rs | 4 +- 11 files changed, 1332 insertions(+), 339 deletions(-) create mode 100644 .github/workflows/contracts-near.yml delete mode 100644 nearBridge/flags.sh create mode 100755 nearBridge/res/near_bridge.wasm create mode 100644 nearBridge/rust-toolchain diff --git a/.github/workflows/contracts-near.yml b/.github/workflows/contracts-near.yml new file mode 100644 index 0000000..cd8afc9 --- /dev/null +++ b/.github/workflows/contracts-near.yml @@ -0,0 +1,33 @@ +on: + push: + branches: + - main + pull_request: +name: Contracts (NEAR) +jobs: + test: + runs-on: self-hosted + strategy: + fail-fast: false + matrix: + include: + - job-name: build all rust contracts + cmd: | + cd nearBridge + ./build.sh + git status + changed_files=$(git status --porcelain --untracked-files=no | wc -l) + if [ $changed_files -gt 0 ]; then + echo 'contract changed, please rebuild contract' + exit 1 + fi + timeout-minutes: 40 + + name: ${{ matrix.job-name }} + steps: + - name: Clone the repository + uses: actions/checkout@v3 + + - name: Execute + run: ${{ matrix.cmd }} + timeout-minutes: ${{ matrix.timeout-minutes }} diff --git a/.gitignore b/.gitignore index 1bfec53..6ca2018 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,5 @@ artifacts/ cache/ coverage/ coverage.json -res/ target/ .env diff --git a/nearBridge/Cargo.lock b/nearBridge/Cargo.lock index 1f5aac3..e0e56ce 100644 --- a/nearBridge/Cargo.lock +++ b/nearBridge/Cargo.lock @@ -9,34 +9,49 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" [[package]] -name = "admin-controlled" -version = "0.1.0" -source = "git+https://github.com/near/rainbow-bridge?rev=3a5373168e720d237ab451e8d41e81010693f876#3a5373168e720d237ab451e8d41e81010693f876" +name = "ahash" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a824f2aa7e75a0c98c5a504fceb80649e9c35265d44525b5f94de4771a395cd" dependencies = [ - "near-sdk 3.0.0-pre.3", + "getrandom 0.2.10", + "once_cell", + "version_check", ] [[package]] -name = "ahash" -version = "0.4.7" +name = "android-tzdata" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "739f4a8db6605981345c5654f3a85b056ce52f37a39d34da03f25bf2151ea16e" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" [[package]] -name = "aho-corasick" -version = "0.7.18" +name = "android_system_properties" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" dependencies = [ - "memchr", + "libc", ] +[[package]] +name = "arrayref" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" + [[package]] name = "arrayvec" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + [[package]] name = "autocfg" version = "1.0.1" @@ -55,6 +70,12 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + [[package]] name = "bitvec" version = "0.17.4" @@ -62,7 +83,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41262f11d771fd4a61aa3ce019fca363b4b6c282fca9da2a31186d3965a47a5c" dependencies = [ "either", - "radium", + "radium 0.3.0", +] + +[[package]] +name = "bitvec" +version = "0.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7774144344a4faa177370406a7ff5f1da24303817368584c6206c8303eb07848" +dependencies = [ + "funty", + "radium 0.6.2", + "tap", + "wyz", +] + +[[package]] +name = "blake2" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a4e37d16930f5459780f5621038b6382b9bb37c19016f39fb6b5808d831f174" +dependencies = [ + "crypto-mac", + "digest 0.9.0", + "opaque-debug", ] [[package]] @@ -75,6 +119,15 @@ dependencies = [ "generic-array", ] +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + [[package]] name = "block-padding" version = "0.2.1" @@ -83,47 +136,47 @@ checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" [[package]] name = "borsh" -version = "0.8.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09a7111f797cc721407885a323fb071636aee57f750b1a4ddc27397eba168a74" +checksum = "15bf3650200d8bffa99015595e10f1fbd17de07abbc25bb067da79e769939bfa" dependencies = [ "borsh-derive", - "hashbrown", + "hashbrown 0.11.2", ] [[package]] name = "borsh-derive" -version = "0.8.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "307f3740906bac2c118a8122fe22681232b244f1369273e45f1156b45c43d2dd" +checksum = "6441c552f230375d18e3cc377677914d2ca2b0d36e52129fe15450a2dce46775" dependencies = [ "borsh-derive-internal", "borsh-schema-derive-internal", - "proc-macro-crate", + "proc-macro-crate 0.1.5", "proc-macro2", - "syn", + "syn 1.0.109", ] [[package]] name = "borsh-derive-internal" -version = "0.8.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2104c73179359431cc98e016998f2f23bc7a05bc53e79741bcba705f30047bc" +checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] name = "borsh-schema-derive-internal" -version = "0.8.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae29eb8418fcd46f723f8691a2ac06857d31179d33d2f2d91eb13967de97c728" +checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -132,18 +185,61 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" +[[package]] +name = "bumpalo" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" + [[package]] name = "byte-slice-cast" version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0a5e3906bcbf133e33c1d4d95afc664ad37fbdb9f6568d8043e7ea8c27d93d3" +[[package]] +name = "byte-slice-cast" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" + [[package]] name = "byteorder" version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +[[package]] +name = "bytes" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" + +[[package]] +name = "bytesize" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e368af43e418a04d52505cf3dbc23dda4e3407ae2fa99fd0e4f308ce546acc" + +[[package]] +name = "c2-chacha" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d27dae93fe7b1e0424dc57179ac396908c26b035a87234809f5c4dfd1b47dc80" +dependencies = [ + "cipher", + "ppv-lite86", +] + +[[package]] +name = "cc" +version = "1.0.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "libc", +] + [[package]] name = "cfg-if" version = "0.1.10" @@ -156,12 +252,51 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "chrono" +version = "0.4.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-targets", +] + +[[package]] +name = "cipher" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" +dependencies = [ + "generic-array", +] + [[package]] name = "convert_case" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" +[[package]] +name = "core-foundation-sys" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" + +[[package]] +name = "cpufeatures" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" +dependencies = [ + "libc", +] + [[package]] name = "cpuid-bool" version = "0.1.2" @@ -174,6 +309,74 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "crypto-mac" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" +dependencies = [ + "generic-array", + "subtle", +] + +[[package]] +name = "curve25519-dalek" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90f9d052967f590a76e62eb387bd0bbb1b000182c3cefe5364db6b7211651bc0" +dependencies = [ + "byteorder", + "digest 0.9.0", + "rand_core 0.5.1", + "subtle", + "zeroize", +] + +[[package]] +name = "darling" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 1.0.109", +] + +[[package]] +name = "darling_macro" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" +dependencies = [ + "darling_core", + "quote", + "syn 1.0.109", +] + [[package]] name = "derive_more" version = "0.99.13" @@ -183,7 +386,7 @@ dependencies = [ "convert_case", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -195,24 +398,78 @@ dependencies = [ "generic-array", ] +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer 0.10.4", + "crypto-common", +] + +[[package]] +name = "dyn-clone" +version = "1.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "545b22097d44f8a9581187cdf93de7a71e4722bf51200cfaba810865b49a495d" + +[[package]] +name = "easy-ext" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53aff6fdc1b181225acdcb5b14c47106726fd8e486707315b1b138baed68ee31" + +[[package]] +name = "ed25519" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" +dependencies = [ + "signature", +] + +[[package]] +name = "ed25519-dalek" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" +dependencies = [ + "curve25519-dalek", + "ed25519", + "rand 0.7.3", + "serde", + "sha2 0.9.3", + "zeroize", +] + [[package]] name = "either" version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + [[package]] name = "eth-types" version = "0.1.0" -source = "git+https://github.com/near/rainbow-bridge?rev=3a5373168e720d237ab451e8d41e81010693f876#3a5373168e720d237ab451e8d41e81010693f876" +source = "git+https://github.com/near/rainbow-bridge?tag=eth-types-0.1.0#e38a17a71af7e5eb01f2858e8439f14f9475638b" dependencies = [ "borsh", "derive_more", - "ethereum-types", - "near-sdk 3.0.0-pre.3", - "rlp", + "ethereum-types 0.14.1", + "hex", + "near-sdk", + "rlp 0.5.2", "rlp-derive", "serde", + "serde-big-array", + "sha3 0.10.8", ] [[package]] @@ -221,12 +478,12 @@ version = "12.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "052a565e3de82944527d6d10a465697e6bb92476b772ca7141080c901f6a63c6" dependencies = [ - "ethereum-types", + "ethereum-types 0.9.2", "rustc-hex", "serde", "serde_json", "tiny-keccak 1.5.0", - "uint", + "uint 0.8.5", ] [[package]] @@ -236,9 +493,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71a6567e6fd35589fea0c63b94b4cf2e55573e413901bdbe60ab15cf0e25e5df" dependencies = [ "crunchy", - "fixed-hash", - "impl-rlp", - "impl-serde", + "fixed-hash 0.6.1", + "impl-rlp 0.2.1", + "impl-serde 0.3.1", + "tiny-keccak 2.0.2", +] + +[[package]] +name = "ethbloom" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" +dependencies = [ + "crunchy", + "fixed-hash 0.8.0", + "impl-rlp 0.3.0", + "impl-serde 0.4.0", "tiny-keccak 2.0.2", ] @@ -248,12 +518,26 @@ version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "473aecff686bd8e7b9db0165cbbb53562376b39bf35b427f0c60446a9e1634b0" dependencies = [ - "ethbloom", - "fixed-hash", - "impl-rlp", - "impl-serde", - "primitive-types", - "uint", + "ethbloom 0.9.2", + "fixed-hash 0.6.1", + "impl-rlp 0.2.1", + "impl-serde 0.3.1", + "primitive-types 0.7.3", + "uint 0.8.5", +] + +[[package]] +name = "ethereum-types" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" +dependencies = [ + "ethbloom 0.13.0", + "fixed-hash 0.8.0", + "impl-rlp 0.3.0", + "impl-serde 0.4.0", + "primitive-types 0.12.2", + "uint 0.9.5", ] [[package]] @@ -263,11 +547,46 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11498d382790b7a8f2fd211780bec78619bba81cdad3a283997c0c41f836759c" dependencies = [ "byteorder", - "rand", + "rand 0.7.3", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "fixed-hash" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c" +dependencies = [ + "byteorder", + "rand 0.8.5", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "fixed-hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +dependencies = [ + "byteorder", "rustc-hex", "static_assertions", ] +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "funty" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7" + [[package]] name = "generic-array" version = "0.14.4" @@ -286,31 +605,92 @@ checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" dependencies = [ "cfg-if 1.0.0", "libc", - "wasi", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", ] [[package]] name = "hashbrown" -version = "0.9.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" +checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" dependencies = [ "ahash", ] +[[package]] +name = "hashbrown" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156" + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + [[package]] name = "hex" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +[[package]] +name = "iana-time-zone" +version = "0.1.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + [[package]] name = "impl-codec" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1be51a921b067b0eaca2fad532d9400041561aa922221cc65f95a85641c6bf53" dependencies = [ - "parity-scale-codec", + "parity-scale-codec 1.3.7", +] + +[[package]] +name = "impl-codec" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "161ebdfec3c8e3b52bf61c4f3550a1eea4f9579d10dc1b936f3171ebdcd6c443" +dependencies = [ + "parity-scale-codec 2.3.1", ] [[package]] @@ -319,7 +699,16 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f7a72f11830b52333f36e3b09a288333888bf54380fd0ac0790a3c31ab0f3c5" dependencies = [ - "rlp", + "rlp 0.4.6", +] + +[[package]] +name = "impl-rlp" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" +dependencies = [ + "rlp 0.5.2", ] [[package]] @@ -332,38 +721,79 @@ dependencies = [ ] [[package]] -name = "indexmap" -version = "1.6.2" +name = "impl-serde" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "824845a0bf897a9042383849b02c1bc219c2383772efcd5c6f9766fa4b81aef3" +checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" dependencies = [ - "autocfg", - "hashbrown", + "serde", ] [[package]] -name = "itoa" -version = "0.4.7" +name = "impl-trait-for-tuples" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" +checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "indexmap" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" +dependencies = [ + "equivalent", + "hashbrown 0.14.2", +] + +[[package]] +name = "itoa" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" + +[[package]] +name = "js-sys" +version = "0.3.65" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54c0c35952f67de54bb584e9fd912b3023117cbafc0a77d8f3dee1fb5f572fe8" +dependencies = [ + "wasm-bindgen", +] [[package]] name = "keccak" -version = "0.1.0" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" +checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" +dependencies = [ + "cpufeatures", +] [[package]] name = "lazy_static" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +dependencies = [ + "spin", +] [[package]] name = "libc" -version = "0.2.94" +version = "0.2.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18794a8ad5b29321f790b55d93dfba91e125cb1a9edbd4f8e3150acc771c1a5e" +checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" + +[[package]] +name = "log" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "memchr" @@ -378,251 +808,244 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" [[package]] -name = "near-contract-standards" -version = "3.1.0" +name = "near-abi" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5837ffd278eeedc4f97104586b3851ed9e7c32449de8b54e8d752f22498588e" +checksum = "885db39b08518fa700b73fa2214e8adbbfba316ba82dd510f50519173eadaf73" dependencies = [ - "near-sdk 3.1.0", + "borsh", + "schemars", + "semver", + "serde", ] [[package]] -name = "near-primitives-core" -version = "0.1.0" +name = "near-account-id" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92035b79bf9983502fe7b67b5a9fecea7604e979d439727827fd0d8f0d77720e" +checksum = "71d258582a1878e6db67400b0504a5099db85718d22c2e07f747fe1706ae7150" dependencies = [ - "base64 0.11.0", "borsh", - "bs58", - "derive_more", - "hex", - "lazy_static", - "num-rational", "serde", - "serde_json", - "sha2", ] [[package]] -name = "near-primitives-core" -version = "0.4.0" +name = "near-contract-standards" +version = "4.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2b3fb5acf3a494aed4e848446ef2d6ebb47dbe91c681105d4d1786c2ee63e52" +checksum = "7bacc932e79b26472797adfb21689294b6f90960d1570daaf1e0b682b59fcb35" dependencies = [ - "base64 0.13.0", - "borsh", - "bs58", - "derive_more", - "hex", - "lazy_static", - "num-rational", + "near-sdk", + "schemars", "serde", "serde_json", - "sha2", ] [[package]] -name = "near-rpc-error-core" -version = "0.1.0" +name = "near-crypto" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffa8dbf8437a28ac40fcb85859ab0d0b8385013935b000c7a51ae79631dd74d9" +checksum = "1e75673d69fd7365508f3d32483669fe45b03bfb34e4d9363e90adae9dfb416c" dependencies = [ - "proc-macro2", - "quote", + "arrayref", + "blake2", + "borsh", + "bs58", + "c2-chacha", + "curve25519-dalek", + "derive_more", + "ed25519-dalek", + "near-account-id", + "once_cell", + "parity-secp256k1", + "primitive-types 0.10.1", + "rand 0.7.3", + "rand_core 0.5.1", "serde", "serde_json", - "syn", + "subtle", + "thiserror", ] [[package]] -name = "near-rpc-error-macro" +name = "near-plugins" version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c6111d713e90c7c551dee937f4a06cb9ea2672243455a4454cc7566387ba2d9" +source = "git+https://github.com/aurora-is-near/near-plugins?tag=v0.1.0#64c512f96d4b51ccdd1a1aed683ed90fd1ca8c57" dependencies = [ - "near-rpc-error-core", - "proc-macro2", - "quote", + "bitflags", + "near-plugins-derive", + "near-sdk", "serde", - "serde_json", - "syn", ] [[package]] -name = "near-runtime-utils" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47f5c1891cec5a03e3dc99f985031408b19516305e2e59d64c4ce52b409e46a0" +name = "near-plugins-derive" +version = "0.1.0" +source = "git+https://github.com/aurora-is-near/near-plugins?tag=v0.1.0#64c512f96d4b51ccdd1a1aed683ed90fd1ca8c57" dependencies = [ - "lazy_static", - "regex", + "darling", + "proc-macro-crate 0.1.5", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] -name = "near-runtime-utils" -version = "4.0.0-pre.1" +name = "near-primitives" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a48d80c4ca1d4cf99bc16490e1e3d49826c150dfc4410ac498918e45c7d98e07" -dependencies = [ - "lazy_static", - "regex", -] - -[[package]] -name = "near-sdk" -version = "3.0.0-pre.3" -source = "git+https://github.com/near/near-sdk-rs?rev=613adcab6322e4f830efb4d5bde2a810ae642158#613adcab6322e4f830efb4d5bde2a810ae642158" +checksum = "8ad1a9a1640539c81f065425c31bffcfbf6b31ef1aeaade59ce905f5df6ac860" dependencies = [ - "base64 0.13.0", "borsh", - "bs58", - "near-primitives-core 0.1.0", - "near-sdk-macros 3.0.0-pre.3", - "near-vm-logic 3.0.0", + "byteorder", + "bytesize", + "chrono", + "derive_more", + "easy-ext", + "hex", + "near-crypto", + "near-primitives-core", + "near-rpc-error-macro", + "near-vm-errors", + "num-rational", + "once_cell", + "primitive-types 0.10.1", + "rand 0.7.3", + "reed-solomon-erasure", "serde", "serde_json", - "wee_alloc", + "smart-default", + "strum", + "thiserror", ] [[package]] -name = "near-sdk" -version = "3.1.0" +name = "near-primitives-core" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7383e242d3e07bf0951e8589d6eebd7f18bb1c1fc5fbec3fad796041a6aebd1" +checksum = "91d508f0fc340f6461e4e256417685720d3c4c00bb5a939b105160e49137caba" dependencies = [ - "base64 0.13.0", + "base64 0.11.0", "borsh", "bs58", - "near-primitives-core 0.4.0", - "near-sdk-macros 3.1.0", - "near-vm-logic 4.0.0-pre.1", + "derive_more", + "near-account-id", + "num-rational", "serde", - "serde_json", - "wee_alloc", + "sha2 0.10.8", + "strum", ] [[package]] -name = "near-sdk-core" -version = "3.0.0-pre.3" -source = "git+https://github.com/near/near-sdk-rs?rev=613adcab6322e4f830efb4d5bde2a810ae642158#613adcab6322e4f830efb4d5bde2a810ae642158" +name = "near-rpc-error-core" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93ee0b41c75ef859c193a8ff1dadfa0c8207bc0ac447cc22259721ad769a1408" dependencies = [ - "Inflector", - "proc-macro2", "quote", - "syn", + "serde", + "syn 1.0.109", ] [[package]] -name = "near-sdk-core" -version = "3.1.0" +name = "near-rpc-error-macro" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "284a78d9eb8eda58330462fa0023a6d7014c941df1f0387095e7dfd1dc0f2bce" +checksum = "8e837bd4bacd807073ec5ceb85708da7f721b46a4c2a978de86027fb0034ce31" dependencies = [ - "Inflector", - "proc-macro2", - "quote", - "syn", + "near-rpc-error-core", + "serde", + "syn 1.0.109", ] [[package]] -name = "near-sdk-macros" -version = "3.0.0-pre.3" -source = "git+https://github.com/near/near-sdk-rs?rev=613adcab6322e4f830efb4d5bde2a810ae642158#613adcab6322e4f830efb4d5bde2a810ae642158" +name = "near-sdk" +version = "4.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15eb3de2defe3626260cc209a6cdb985c6b27b0bd4619fad97dcfae002c3c5bd" dependencies = [ - "near-sdk-core 3.0.0-pre.3", - "proc-macro2", - "quote", - "syn", + "base64 0.13.0", + "borsh", + "bs58", + "near-abi", + "near-crypto", + "near-primitives", + "near-primitives-core", + "near-sdk-macros", + "near-sys", + "near-vm-logic", + "once_cell", + "schemars", + "serde", + "serde_json", + "wee_alloc", ] [[package]] name = "near-sdk-macros" -version = "3.1.0" +version = "4.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2037337438f97d1ce5f7c896cf229dc56dacd5c01142d1ef95a7d778cde6ce7d" +checksum = "4907affc9f5ed559456509188ff0024f1f2099c0830e6bdb66eb61d5b75912c0" dependencies = [ - "near-sdk-core 3.1.0", + "Inflector", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] -name = "near-vm-errors" -version = "3.0.0" +name = "near-sys" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53a100dda565c5375ac061126167afc5c33cdba1f2e325cfae3ce08f4a5a432a" -dependencies = [ - "borsh", - "hex", - "near-rpc-error-macro", - "serde", -] +checksum = "e307313276eaeced2ca95740b5639e1f3125b7c97f0a1151809d105f1aa8c6d3" [[package]] name = "near-vm-errors" -version = "4.0.0-pre.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e281d8730ed8cb0e3e69fb689acee6b93cdb43824cd69a8ffd7e1bfcbd1177d7" +checksum = "d0da466a30f0446639cbd788c30865086fac3e8dcb07a79e51d2b0775ed4261e" dependencies = [ "borsh", - "hex", + "near-account-id", "near-rpc-error-macro", "serde", ] [[package]] name = "near-vm-logic" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a12201244dd59ae79506767afe7a8f51b5eb7bd0aa237d355dfa635f7b777c4a" -dependencies = [ - "base64 0.13.0", - "borsh", - "bs58", - "byteorder", - "near-primitives-core 0.1.0", - "near-runtime-utils 3.0.0", - "near-vm-errors 3.0.0", - "serde", - "sha2", - "sha3", -] - -[[package]] -name = "near-vm-logic" -version = "4.0.0-pre.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e11cb28a2d07f37680efdaf860f4c9802828c44fc50c08009e7884de75d982c5" +checksum = "81b534828419bacbf1f7b11ef7b00420f248c548c485d3f0cfda8bb6931152f2" dependencies = [ "base64 0.13.0", "borsh", "bs58", "byteorder", - "near-primitives-core 0.4.0", - "near-runtime-utils 4.0.0-pre.1", - "near-vm-errors 4.0.0-pre.1", + "near-account-id", + "near-crypto", + "near-primitives", + "near-primitives-core", + "near-vm-errors", + "ripemd", "serde", - "sha2", - "sha3", + "sha2 0.9.3", + "sha3 0.9.1", + "zeropool-bn", ] [[package]] name = "near_bridge" -version = "1.0.1" +version = "2.0.0" dependencies = [ - "admin-controlled", "eth-types", "ethabi", "hex", "near-contract-standards", - "near-sdk 3.1.0", - "rlp", - "serde", - "serde_json", + "near-plugins", + "near-sdk", + "rlp 0.5.2", "tiny-keccak 1.5.0", - "uint", + "uint 0.8.5", ] [[package]] @@ -668,6 +1091,12 @@ dependencies = [ "autocfg", ] +[[package]] +name = "once_cell" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" + [[package]] name = "opaque-debug" version = "0.3.0" @@ -680,17 +1109,55 @@ version = "1.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4b26b16c7687c3075982af47719e481815df30bc544f7a6690763a25ca16e9d" dependencies = [ - "arrayvec", - "bitvec", - "byte-slice-cast", + "arrayvec 0.5.2", + "bitvec 0.17.4", + "byte-slice-cast 0.3.5", "serde", ] +[[package]] +name = "parity-scale-codec" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909" +dependencies = [ + "arrayvec 0.7.4", + "bitvec 0.20.4", + "byte-slice-cast 1.2.2", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "parity-secp256k1" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fca4f82fccae37e8bbdaeb949a4a218a1bbc485d11598f193d2a908042e5fc1" +dependencies = [ + "arrayvec 0.5.2", + "cc", + "cfg-if 0.1.10", + "rand 0.7.3", +] + [[package]] name = "ppv-lite86" -version = "0.2.10" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "primitive-types" @@ -698,11 +1165,34 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7dd39dcacf71411ba488570da7bbc89b717225e46478b30ba99b92db6b149809" dependencies = [ - "fixed-hash", - "impl-codec", - "impl-rlp", - "impl-serde", - "uint", + "fixed-hash 0.6.1", + "impl-codec 0.4.2", + "impl-rlp 0.2.1", + "impl-serde 0.3.1", + "uint 0.8.5", +] + +[[package]] +name = "primitive-types" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05e4722c697a58a99d5d06a08c30821d7c082a4632198de1eaa5a6c22ef42373" +dependencies = [ + "fixed-hash 0.7.0", + "impl-codec 0.5.1", + "uint 0.9.5", +] + +[[package]] +name = "primitive-types" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" +dependencies = [ + "fixed-hash 0.8.0", + "impl-rlp 0.3.0", + "impl-serde 0.4.0", + "uint 0.9.5", ] [[package]] @@ -714,20 +1204,30 @@ dependencies = [ "toml", ] +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit", +] + [[package]] name = "proc-macro2" -version = "1.0.26" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152013215dca273577e18d2bf00fa862b89b24169fb78c4c95aeb07992c9cec" +checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" dependencies = [ - "unicode-xid", + "unicode-ident", ] [[package]] name = "quote" -version = "1.0.9" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] @@ -738,19 +1238,36 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "def50a86306165861203e7f84ecffbbdfdea79f0e51039b33de1e952358c47ac" +[[package]] +name = "radium" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb" + [[package]] name = "rand" version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" dependencies = [ - "getrandom", + "getrandom 0.1.16", "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.2.2", + "rand_core 0.5.1", "rand_hc", ] +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + [[package]] name = "rand_chacha" version = "0.2.2" @@ -758,7 +1275,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", ] [[package]] @@ -767,7 +1294,16 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" dependencies = [ - "getrandom", + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.10", ] [[package]] @@ -776,25 +1312,26 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" dependencies = [ - "rand_core", + "rand_core 0.5.1", ] [[package]] -name = "regex" -version = "1.5.6" +name = "reed-solomon-erasure" +version = "4.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d83f127d94bdbcda4c8cc2e50f6f84f4b611f69c902699ca385a39c3a75f9ff1" +checksum = "a415a013dd7c5d4221382329a5a3482566da675737494935cbbbcdec04662f9d" dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", + "smallvec", ] [[package]] -name = "regex-syntax" -version = "0.6.26" +name = "ripemd" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49b3de9ec5dc0a3417da371aab17d729997c15010e7fd24ff707773a33bddb64" +checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" +dependencies = [ + "digest 0.10.7", +] [[package]] name = "rlp" @@ -805,6 +1342,16 @@ dependencies = [ "rustc-hex", ] +[[package]] +name = "rlp" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" +dependencies = [ + "bytes", + "rustc-hex", +] + [[package]] name = "rlp-derive" version = "0.1.0" @@ -813,7 +1360,7 @@ checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -822,12 +1369,48 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" +[[package]] +name = "rustversion" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" + [[package]] name = "ryu" version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" +[[package]] +name = "schemars" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f7b0ce13155372a76ee2e1c5ffba1fe61ede73fbea5630d61eee6fac4929c0c" +dependencies = [ + "dyn-clone", + "schemars_derive", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e85e2a16b12bdb763244c69ab79363d71db2b4b918a2def53f80b02e0574b13c" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 1.0.109", +] + +[[package]] +name = "semver" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" + [[package]] name = "serde" version = "1.0.118" @@ -837,6 +1420,15 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde-big-array" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3323f09a748af288c3dc2474ea6803ee81f118321775bffa3ac8f7e65c5e90e7" +dependencies = [ + "serde", +] + [[package]] name = "serde_derive" version = "1.0.118" @@ -845,7 +1437,18 @@ checksum = "c84d3526699cd55261af4b941e4e725444df67aa4f9e6a3564f18030d12672df" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", +] + +[[package]] +name = "serde_derive_internals" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] @@ -854,7 +1457,6 @@ version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "799e97dc9fdae36a5c8b8f2cae9ce2ee9fdce2058c57a93e6099d919fd982f79" dependencies = [ - "indexmap", "itoa", "ryu", "serde", @@ -866,40 +1468,161 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa827a14b29ab7f44778d14a88d3cb76e949c45083f7dbfa507d0cb699dc12de" dependencies = [ - "block-buffer", + "block-buffer 0.9.0", "cfg-if 1.0.0", "cpuid-bool", - "digest", + "digest 0.9.0", "opaque-debug", ] +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.10.7", +] + [[package]] name = "sha3" version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809" dependencies = [ - "block-buffer", - "digest", + "block-buffer 0.9.0", + "digest 0.9.0", "keccak", "opaque-debug", ] +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "signature" +version = "1.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" + +[[package]] +name = "smallvec" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" + +[[package]] +name = "smart-default" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "133659a15339456eeeb07572eb02a91c91e9815e9cbc89566944d2c8d3efdbf6" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + [[package]] name = "static_assertions" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "strum" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 1.0.109", +] + +[[package]] +name = "subtle" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" + [[package]] name = "syn" -version = "1.0.57" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4211ce9909eb971f111059df92c45640aad50a619cf55cd76476be803c4c68e6" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2", "quote", - "unicode-xid", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "thiserror" +version = "1.0.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.39", ] [[package]] @@ -929,11 +1652,28 @@ dependencies = [ "serde", ] +[[package]] +name = "toml_datetime" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", +] + [[package]] name = "typenum" -version = "1.13.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f6906492a7cd215bfa4cf595b600146ccfac0c79bcbd1f3000162af5e8b06" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "uint" @@ -948,10 +1688,22 @@ dependencies = [ ] [[package]] -name = "unicode-xid" -version = "0.2.1" +name = "uint" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "unicode-ident" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "version_check" @@ -965,6 +1717,66 @@ version = "0.9.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.88" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7daec296f25a1bae309c0cd5c29c4b260e510e6d813c286b19eaadf409d40fce" +dependencies = [ + "cfg-if 1.0.0", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.88" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e397f4664c0e4e428e8313a469aaa58310d302159845980fd23b0f22a847f217" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.39", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.88" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5961017b3b08ad5f3fe39f1e79877f8ee7c23c5e5fd5eb80de95abc41f1f16b2" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.88" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5353b8dab669f5e10f5bd76df26a9360c748f054f862ff5f3f8aae0c7fb3907" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.39", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.88" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d046c5d029ba91a1ed14da14dca44b68bf2f124cfbaf741c54151fdb3e0750b" + [[package]] name = "wee_alloc" version = "0.4.5" @@ -998,3 +1810,118 @@ name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-core" +version = "0.51.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "winnow" +version = "0.5.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "829846f3e3db426d4cee4510841b71a8e58aa2a76b1132579487ae430ccd9c7b" +dependencies = [ + "memchr", +] + +[[package]] +name = "wyz" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214" + +[[package]] +name = "zeroize" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4756f7db3f7b5574938c3eb1c117038b8e07f95ee6718c0efad4ac21508f1efd" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.39", +] + +[[package]] +name = "zeropool-bn" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e61de68ede9ffdd69c01664f65a178c5188b73f78faa21f0936016a888ff7c" +dependencies = [ + "borsh", + "byteorder", + "crunchy", + "lazy_static", + "rand 0.8.5", + "rustc-hex", +] diff --git a/nearBridge/Cargo.toml b/nearBridge/Cargo.toml index c29a71c..8b11382 100644 --- a/nearBridge/Cargo.toml +++ b/nearBridge/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "near_bridge" -version = "1.0.1" +version = "2.0.0" authors = ["Near Inc "] edition = "2018" @@ -8,17 +8,17 @@ edition = "2018" crate-type = ["cdylib", "rlib"] [dependencies] -near-sdk = "3.0.1" -near-contract-standards = "3.0.1" -eth-types = { git = "https://github.com/near/rainbow-bridge", rev = "3a5373168e720d237ab451e8d41e81010693f876" } -admin-controlled = { git = "https://github.com/near/rainbow-bridge", rev = "3a5373168e720d237ab451e8d41e81010693f876" } -tiny-keccak = "1.4.0" +near-sdk = "4.1.1" +near-contract-standards = "4.1.1" +eth-types = { git = "https://github.com/near/rainbow-bridge", tag = "eth-types-0.1.0", default-features = false} ethabi = "12.0.0" -serde = { version = "1.0.70", features = ["derive"] } -serde_json = "1.0.64" +rlp = "0.5.2" +hex = "0.4.3" +tiny-keccak = "1.4.0" +near-plugins = { git = "https://github.com/aurora-is-near/near-plugins", tag = "v0.1.0" } + +[dev-dependencies] uint = { version = "0.8.3", default-features = false } -rlp = "0.4.2" -hex = "0.4.2" [profile.release] codegen-units = 1 diff --git a/nearBridge/build.sh b/nearBridge/build.sh index 79fbc10..bfc4c13 100755 --- a/nearBridge/build.sh +++ b/nearBridge/build.sh @@ -1,7 +1,32 @@ -#!/bin/bash +#!/usr/bin/env bash + +# Exit script as soon as a command fails. set -e -cd "`dirname $0`" -source ./flags.sh -cargo build --target wasm32-unknown-unknown --release -mkdir -p res -cp target/wasm32-unknown-unknown/release/near_bridge.wasm ./res/ + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" + +if [[ -z "$BUILDKITE" ]] && [[ "$(uname -s)" != "Darwin" ]]; +then + userflag="-u $UID:$UID" +else + userflag="" +fi + +arch=`uname -m` +if [ "$arch" == "arm64" ] +then + tag=":latest-arm64" +else + tag="" +fi + +docker run \ + --rm \ + --mount type=bind,source=$DIR/..,target=/host \ + --cap-add=SYS_PTRACE --security-opt seccomp=unconfined $userflag \ + -w /host/nearBridge \ + -e RUSTFLAGS='-C link-arg=-s' \ + nearprotocol/contract-builder$tag \ + /bin/bash -c "rustup target add wasm32-unknown-unknown; cargo build --target wasm32-unknown-unknown --release" + +cp $DIR/target/wasm32-unknown-unknown/release/near_bridge.wasm $DIR/res/ diff --git a/nearBridge/flags.sh b/nearBridge/flags.sh deleted file mode 100644 index 22eb7d9..0000000 --- a/nearBridge/flags.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -if [ -z "$KEEP_NAMES" ]; then - export RUSTFLAGS='-C link-arg=-s' -else - export RUSTFLAGS='' -fi diff --git a/nearBridge/res/near_bridge.wasm b/nearBridge/res/near_bridge.wasm new file mode 100755 index 0000000000000000000000000000000000000000..7848021df1cf6087460e73aba15eab01a8755027 GIT binary patch literal 382682 zcmeFa3z%G0neV+XRbACxRh^BUgh=AJyU3ic8M)+)2n_O_$H6m&hR8&0bh{N~$ziaJFRjNCk z5ERi4)ZTmTb$Qo&U+=o?VAX~fg+UO6m(~tHD%=zt6>ZuSZsLxgcoX+8Q%d0OEuDmy zy(~B?d>OAoZUV0H%alaAzvt2*Nq@mnO?RW)noAkZQ%I`Yy~@!VkNhg9u6nMy%aA=9 zcrSH{KF`bYJizP9a6=($jbHVH!rYKCum|1qKyL1WqZ;llcR)a`G0Cb!*|^d*UkB-~ zQL9UBP^QMO-bb5MXjqA=o;QJTNda;wqXD4`)D=q+rqyk$KjK$-RLQ2*V66@3x2lK~ z-jat0^5{|7DQe`{q^_uLz4mw90+WBRzS@JJda1$f5ew`sm(PBAw7PiUR#0)NtLm2p z(Km)3AFp0_QfK|@RmZGczxsv8ZP>Vaeb7)^JAYiccJ;cTsiemoed7A{tJiH@x$5Yn zk3W&?amNJ1da>|?^{bCree~)L8;)PU&CB|6>rOavqsut&`D>3qdd

$GvFvhK;LU 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≦u+g4GUjb8qDr%m-ox2>Gdvo@9!IV6Da_ty}oPi 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 z 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 m`?vexis4e=I>2E|!1fG*c#>, /// Mask determining all paused functions + #[deprecated] paused: Mask, } @@ -56,12 +75,16 @@ impl NearBridge { #[init] pub fn new(prover_account: AccountId, e_near_address: String) -> Self { assert!(!env::state_exists(), "Already initialized"); - Self { + #[allow(deprecated)] + let mut contract = Self { prover_account, e_near_address: get_eth_address(e_near_address), used_events: UnorderedSet::new(b"u".to_vec()), paused: Mask::default(), - } + }; + + contract.acl_init_super_admin(near_sdk::env::predecessor_account_id()); + contract } /// Deposit NEAR for bridging from the predecessor account ID @@ -74,13 +97,12 @@ impl NearBridge { #[payable] #[result_serializer(borsh)] // todo: how much GAS is required to execute this method with sending the tokens back and ensure we have enough + #[pause(except(roles(Role::DAO, Role::UnrestrictedMigrateToEthereum)))] pub fn migrate_to_ethereum(&mut self, eth_recipient: String) -> ResultType { - self.check_not_paused(PAUSE_MIGRATE_TO_ETH); - // Predecessor must attach Near to migrate to ETH let attached_deposit = env::attached_deposit(); if attached_deposit == 0 { - env::panic(b"Attached deposit must be greater than zero"); + env::panic_str("Attached deposit must be greater than zero"); } // If the method is paused or the eth recipient address is invalid, then we need to: @@ -88,7 +110,7 @@ impl NearBridge { // 2) Panic and tell the user why let eth_recipient_clone = eth_recipient.clone(); if !is_valid_eth_address(eth_recipient_clone) { - env::panic(b"ETH address is invalid"); + env::panic_str("ETH address is invalid"); } ResultType::MigrateNearToEthereum { @@ -98,9 +120,8 @@ impl NearBridge { } #[payable] + #[pause(except(roles(Role::DAO, Role::UnrestrictedFinaliseEthToNearTransfer)))] pub fn finalise_eth_to_near_transfer(&mut self, #[serializer(borsh)] proof: Proof) { - self.check_not_paused(PAUSE_ETH_TO_NEAR_TRANSFER); - let event = TransferToNearInitiatedEvent::from_log_entry_data(&proof.log_entry_data); assert_eq!( event.e_near_address, @@ -112,26 +133,27 @@ impl NearBridge { let proof_1 = proof.clone(); - ext_prover::verify_log_entry( - proof.log_index, - proof.log_entry_data, - proof.receipt_index, - proof.receipt_data, - proof.header_data, - proof.proof, - false, // Do not skip bridge call. This is only used for development and diagnostics. - &self.prover_account, - NO_DEPOSIT, - VERIFY_LOG_ENTRY_GAS, - ) - .then(ext_self::finish_eth_to_near_transfer( - event.recipient, - event.amount, - proof_1, - &env::current_account_id(), - env::attached_deposit(), - FINISH_FINALISE_GAS, - )); + ext_prover::ext(self.prover_account.clone()) + .with_static_gas(VERIFY_LOG_ENTRY_GAS) + .verify_log_entry( + proof.log_index, + proof.log_entry_data, + proof.receipt_index, + proof.receipt_data, + proof.header_data, + proof.proof, + false, // Do not skip bridge call. This is only used for development and diagnostics. + ) + .then( + ext_self::ext(env::current_account_id()) + .with_static_gas(FINISH_FINALISE_GAS) + .with_attached_deposit(env::attached_deposit()) + .finish_eth_to_near_transfer( + event.recipient.parse().unwrap(), + event.amount, + proof_1, + ), + ); } /// Finish depositing once the proof was successfully validated. Can only be called by the contract @@ -151,7 +173,7 @@ impl NearBridge { let required_deposit = self.record_proof(&proof); if env::attached_deposit() < required_deposit { - env::panic(b"Attached deposit is not sufficient to record proof"); + env::panic_str("Attached deposit is not sufficient to record proof"); } Promise::new(new_owner_id).transfer(amount); @@ -181,6 +203,15 @@ impl NearBridge { required_deposit } + + #[access_control_any(roles(Role::DAO))] + pub fn attach_full_access_key(&self, public_key: PublicKey) -> Promise { + Promise::new(env::current_account_id()).add_full_access_key(public_key) + } + + pub fn version(&self) -> String { + env!("CARGO_PKG_VERSION").to_owned() + } } #[ext_contract(ext_self)] @@ -197,21 +228,15 @@ pub trait ExtNearBridge { ) -> Promise; } -admin_controlled::impl_admin_controlled!(NearBridge, paused); - #[cfg(not(target_arch = "wasm32"))] #[cfg(test)] mod tests { use near_sdk::test_utils::VMContextBuilder; - use near_sdk::{testing_env, MockedBlockchain}; + use near_sdk::testing_env; use super::*; - use near_sdk::env::sha256; use std::convert::TryInto; - use std::panic; - use uint::rustc_hex::{FromHex, ToHex}; - - const UNPAUSE_ALL: Mask = 0; + use uint::rustc_hex::FromHex; macro_rules! inner_set_env { ($builder:ident) => { @@ -236,10 +261,10 @@ mod tests { } fn alice_near_account() -> AccountId { - "alice.near".to_string() + "alice.near".parse().unwrap() } fn prover_near_account() -> AccountId { - "prover".to_string() + "prover".parse().unwrap() } fn e_near_eth_address() -> String { "68a3637ba6e75c0f66b61a42639c4e9fcd3d4824".to_string() @@ -251,16 +276,6 @@ mod tests { "25Ac31A08EBA29067Ba4637788d1DbFB893cEBf".to_string() } - /// Generate a valid ethereum address - fn ethereum_address_from_id(id: u8) -> String { - let mut buffer = vec![id]; - sha256(buffer.as_mut()) - .into_iter() - .take(20) - .collect::>() - .to_hex() - } - fn sample_proof() -> Proof { Proof { log_index: 0, @@ -328,7 +343,7 @@ mod tests { let mut contract = NearBridge::new(prover_near_account(), e_near_eth_address()); - contract.set_paused(PAUSE_MIGRATE_TO_ETH); + contract.pa_pause_feature("migrate_to_ethereum".to_owned()); // lets deposit 1 Near let deposit_amount = 1_000_000_000_000_000_000_000_000u128; @@ -357,7 +372,7 @@ mod tests { let mut contract = NearBridge::new(prover_near_account(), e_near_eth_address()); - contract.set_paused(PAUSE_ETH_TO_NEAR_TRANSFER); + contract.pa_pause_feature("finalise_eth_to_near_transfer".to_owned()); contract.finalise_eth_to_near_transfer(sample_proof()); } diff --git a/nearBridge/src/prover.rs b/nearBridge/src/prover.rs index e4c44fc..50e2571 100644 --- a/nearBridge/src/prover.rs +++ b/nearBridge/src/prover.rs @@ -5,7 +5,6 @@ use ethabi::param_type::Writer; use ethabi::{Event, EventParam, Hash, Log, ParamType, RawLog, Token}; use near_sdk::borsh::{self, BorshDeserialize, BorshSerialize}; use near_sdk::{env, ext_contract}; -use near_sdk::serde::{Deserialize, Serialize}; use tiny_keccak::Keccak; pub type EthAddress = [u8; 20]; @@ -41,7 +40,7 @@ pub trait Prover { ) -> bool; } -#[derive(Default, BorshDeserialize, BorshSerialize, Clone, Serialize, Deserialize)] +#[derive(Default, BorshDeserialize, BorshSerialize, Clone)] pub struct Proof { pub log_index: u64, pub log_entry_data: Vec, @@ -127,7 +126,7 @@ impl EthEvent { topics: vec![vec![long_signature(&event.name, ¶ms).0.into()], topics].concat(), data: ethabi::encode(&values), }; - rlp::encode(&log_entry) + rlp::encode(&log_entry).to_vec() } } diff --git a/nearBridge/src/transfer_to_near_event.rs b/nearBridge/src/transfer_to_near_event.rs index c1c41d8..8e1f629 100644 --- a/nearBridge/src/transfer_to_near_event.rs +++ b/nearBridge/src/transfer_to_near_event.rs @@ -1,7 +1,7 @@ use crate::prover::{EthAddress, EthEvent, EthEventParams}; use ethabi::{ParamType, Token}; use hex::ToHex; -use near_sdk::{AccountId, Balance}; +use near_sdk::Balance; /// Data that was emitted by the Ethereum TransferToNearInitiated event. #[derive(Debug, Eq, PartialEq)] @@ -9,7 +9,7 @@ pub struct TransferToNearInitiatedEvent { pub e_near_address: EthAddress, pub sender: String, pub amount: Balance, - pub recipient: AccountId, + pub recipient: String, } impl TransferToNearInitiatedEvent {