diff --git a/.github/workflows/rust-fmt-lint.yaml b/.github/workflows/rust-fmt-lint.yaml
index 37f5bfd5..288fffa3 100644
--- a/.github/workflows/rust-fmt-lint.yaml
+++ b/.github/workflows/rust-fmt-lint.yaml
@@ -13,7 +13,7 @@ on:
env:
RUST_FMT: nightly-2022-06-09-x86_64-unknown-linux-gnu
- RUST_CLIPPY: 1.64
+ RUST_CLIPPY: 1.65
jobs:
"lint_fmt":
diff --git a/.gitignore b/.gitignore
index 8f3d3f18..241b7229 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,7 +9,7 @@ node_modules
/coverage
# production
-build
+/**/build
# misc
.idea
diff --git a/deps/concordium-rust-sdk b/deps/concordium-rust-sdk
index 35cd980b..adf27b44 160000
--- a/deps/concordium-rust-sdk
+++ b/deps/concordium-rust-sdk
@@ -1 +1 @@
-Subproject commit 35cd980ba4c6ff63079de4498f3a52953b2da4ac
+Subproject commit adf27b44ee013c90ae93c4eed7952c9bdb8e9389
diff --git a/gallery/CHANGELOG.md b/gallery/CHANGELOG.md
new file mode 100644
index 00000000..eb569ea9
--- /dev/null
+++ b/gallery/CHANGELOG.md
@@ -0,0 +1,9 @@
+## Unreleased changes
+
+## 0.1.2
+
+- Add link to tutorial
+
+## 0.1.1
+
+- Initial gallery front end
diff --git a/gallery/Dockerfile b/gallery/Dockerfile
index 009c29cb..b92c765d 100644
--- a/gallery/Dockerfile
+++ b/gallery/Dockerfile
@@ -29,7 +29,7 @@ WORKDIR /build
ENV PORT=8100
ENV NODE=http://172.17.0.1:20000
ENV LOG_LEVEL=info
-ENV STATEMENT='[{"type":"AttributeInSet","attributeTag":"countryOfResidence","set":["AT","BE","BG","CY","CZ","DK","EE","FI","FR","DE","GR","HU","IE","IT","LV","LT","LU","MT","NL","PL","PT","RO","SK","SI","ES","SE","HR"]},{"type":"AttributeInRange","attributeTag":"dob","lower":"18000101","upper":"20091212"}]'
+ENV STATEMENT='[{"type":"AttributeInSet","attributeTag":"idDocIssuer","set":["AT","BE","BG","CY","CZ","DK","EE","FI","FR","DE","GR","HU","IE","IT","LV","LT","LU","MT","NL","PL","PT","RO","SK","SI","ES","SE","HR"]},{"type":"AttributeInRange","attributeTag":"dob","lower":"18000101","upper":"20070627"}]'
ENV NAMES='["I Scream", "Starry Night", "Tranquility", "Quiet", "Storm", "Timeless", "Endless Rain"]'
COPY --from=rust_build ./verifier/target/release/gallery-verifier ./main
diff --git a/gallery/Jenkinsfile b/gallery/Jenkinsfile
new file mode 100644
index 00000000..3d06b726
--- /dev/null
+++ b/gallery/Jenkinsfile
@@ -0,0 +1,36 @@
+// Expected parameters:
+// - image_tag: Tag that will be used for the new image.
+// - build_image: Base image that the image being built extends.
+pipeline {
+ agent any
+ environment {
+ image_repo = "concordium/dapp-gallery"
+ image_name = "${image_repo}:${image_tag}"
+ }
+ stages {
+ stage('dockerhub-login') {
+ environment {
+ // Defines 'CRED_USR' and 'CRED_PSW'
+ // (see 'https://www.jenkins.io/doc/book/pipeline/jenkinsfile/#handling-credentials').
+ CRED = credentials('jenkins-dockerhub')
+ }
+ steps {
+ sh 'docker login --username "${CRED_USR}" --password "${CRED_PSW}"'
+ }
+ }
+ stage('build-push') {
+ steps {
+ sh '''\
+ docker build \
+ --build-arg build_image="${build_image}" \
+ --label build_image="${build_image}" \
+ --tag="${image_name}" \
+ -f ./gallery/Dockerfile \
+ .
+ docker push "${image_name}"
+ '''.stripIndent()
+ }
+ }
+ }
+}
+
diff --git a/gallery/README.md b/gallery/README.md
index 9b61d01f..77c466a4 100644
--- a/gallery/README.md
+++ b/gallery/README.md
@@ -20,7 +20,8 @@ The backend for this demo can be found in the [verifier](./verifier/) folder:
- Run `yarn build` in a terminal
- Run `yarn build-verifier` (This builds the [backend](./verifier/) using cargo/rustc)
-- Run `yarn start --statement "$(
))}
+
);
}
diff --git a/gallery/verifier/Cargo.lock b/gallery/verifier/Cargo.lock
index ffd76727..cae42a2d 100644
--- a/gallery/verifier/Cargo.lock
+++ b/gallery/verifier/Cargo.lock
@@ -2,6 +2,56 @@
# It is not intended for manual editing.
version = 3
+[[package]]
+name = "addr2line"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3"
+dependencies = [
+ "gimli",
+]
+
+[[package]]
+name = "adler"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
+
+[[package]]
+name = "aead"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0"
+dependencies = [
+ "crypto-common",
+ "generic-array",
+]
+
+[[package]]
+name = "aes"
+version = "0.8.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2"
+dependencies = [
+ "cfg-if",
+ "cipher",
+ "cpufeatures",
+]
+
+[[package]]
+name = "aes-gcm"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "209b47e8954a928e1d72e86eca7000ebb6655fe1436d33eefc2201cad027e237"
+dependencies = [
+ "aead",
+ "aes",
+ "cipher",
+ "ctr",
+ "ghash",
+ "subtle",
+]
+
[[package]]
name = "ahash"
version = "0.7.6"
@@ -22,6 +72,12 @@ dependencies = [
"memchr",
]
+[[package]]
+name = "android-tzdata"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
+
[[package]]
name = "android_system_properties"
version = "0.1.5"
@@ -61,7 +117,7 @@ checksum = "10f203db73a71dfa2fb6dd22763990fa26f3d2625a6da2da900d23b87d26be27"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
]
[[package]]
@@ -72,7 +128,7 @@ checksum = "31e6e93155431f3931513b243d371981bb2770112b370c82745a1d19d2f99364"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
]
[[package]]
@@ -138,12 +194,39 @@ dependencies = [
"tower-service",
]
+[[package]]
+name = "backtrace"
+version = "0.3.68"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12"
+dependencies = [
+ "addr2line",
+ "cc",
+ "cfg-if",
+ "libc",
+ "miniz_oxide",
+ "object",
+ "rustc-demangle",
+]
+
[[package]]
name = "base64"
version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
+[[package]]
+name = "base64"
+version = "0.21.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d"
+
+[[package]]
+name = "base64ct"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b"
+
[[package]]
name = "bitflags"
version = "1.3.2"
@@ -168,6 +251,15 @@ dependencies = [
"generic-array",
]
+[[package]]
+name = "block-padding"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93"
+dependencies = [
+ "generic-array",
+]
+
[[package]]
name = "borsh"
version = "0.9.3"
@@ -188,7 +280,7 @@ dependencies = [
"borsh-schema-derive-internal",
"proc-macro-crate 0.1.5",
"proc-macro2",
- "syn",
+ "syn 1.0.104",
]
[[package]]
@@ -199,7 +291,7 @@ checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
]
[[package]]
@@ -210,7 +302,7 @@ checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
]
[[package]]
@@ -256,7 +348,7 @@ checksum = "13e576ebe98e605500b3c8041bb888e966653577172df6dd97398714eb30b9bf"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
]
[[package]]
@@ -271,6 +363,15 @@ version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dfb24e866b15a1af2a1b663f10c6b6b8f397a84aadb828f12e5b289ec23a3a3c"
+[[package]]
+name = "cbc"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6"
+dependencies = [
+ "cipher",
+]
+
[[package]]
name = "cc"
version = "1.0.77"
@@ -285,20 +386,30 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "chrono"
-version = "0.4.23"
+version = "0.4.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "16b0a3d9ed01224b22057780a37bb8c5dbfe1be8ba48678e7bf57ec4b385411f"
+checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5"
dependencies = [
+ "android-tzdata",
"iana-time-zone",
"js-sys",
- "num-integer",
"num-traits",
"serde",
- "time",
+ "time 0.1.45",
"wasm-bindgen",
"winapi",
]
+[[package]]
+name = "cipher"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad"
+dependencies = [
+ "crypto-common",
+ "inout",
+]
+
[[package]]
name = "clap"
version = "4.0.29"
@@ -324,7 +435,7 @@ dependencies = [
"proc-macro-error",
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
]
[[package]]
@@ -348,8 +459,9 @@ dependencies = [
[[package]]
name = "concordium-contracts-common"
-version = "5.3.1"
+version = "7.1.0"
dependencies = [
+ "base64 0.21.2",
"bs58",
"chrono",
"concordium-contracts-common-derive",
@@ -367,17 +479,18 @@ dependencies = [
[[package]]
name = "concordium-contracts-common-derive"
-version = "1.0.1"
+version = "3.0.0"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 2.0.28",
]
[[package]]
name = "concordium-rust-sdk"
-version = "2.3.0"
+version = "3.0.0"
dependencies = [
+ "aes-gcm",
"anyhow",
"chrono",
"concordium-smart-contract-engine",
@@ -386,11 +499,11 @@ dependencies = [
"ed25519-dalek",
"futures",
"hex",
+ "http",
"num",
"num-bigint 0.4.3",
"num-traits",
"prost",
- "prost-derive",
"rand 0.7.3",
"rust_decimal",
"semver",
@@ -404,7 +517,7 @@ dependencies = [
[[package]]
name = "concordium-smart-contract-engine"
-version = "1.0.1"
+version = "2.0.0"
dependencies = [
"anyhow",
"byteorder",
@@ -427,7 +540,7 @@ dependencies = [
[[package]]
name = "concordium-wasm"
-version = "1.0.0"
+version = "2.0.0"
dependencies = [
"anyhow",
"concordium-contracts-common",
@@ -438,11 +551,14 @@ dependencies = [
[[package]]
name = "concordium_base"
-version = "1.0.0"
+version = "2.0.0"
dependencies = [
+ "aes",
"anyhow",
+ "base64 0.13.1",
"bs58",
"byteorder",
+ "cbc",
"chrono",
"concordium-contracts-common",
"concordium_base_derive",
@@ -453,19 +569,23 @@ dependencies = [
"ff",
"group",
"hex",
+ "hmac",
"itertools",
"leb128",
"libc",
+ "nom",
"num",
"num-bigint 0.4.3",
"num-traits",
"pairing",
+ "pbkdf2",
"rand 0.7.3",
"rand_core 0.5.1",
"rayon",
"rust_decimal",
"serde",
"serde_json",
+ "serde_with",
"sha2 0.10.6",
"sha3",
"subtle",
@@ -479,7 +599,7 @@ version = "1.0.0"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 2.0.28",
]
[[package]]
@@ -553,9 +673,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
dependencies = [
"generic-array",
+ "rand_core 0.6.4",
"typenum",
]
+[[package]]
+name = "ctr"
+version = "0.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835"
+dependencies = [
+ "cipher",
+]
+
[[package]]
name = "curve25519-dalek"
version = "3.2.1"
@@ -593,7 +723,7 @@ dependencies = [
"proc-macro2",
"quote",
"scratch",
- "syn",
+ "syn 1.0.104",
]
[[package]]
@@ -610,7 +740,51 @@ checksum = "a08a6e2fcc370a089ad3b4aaf54db3b1b4cee38ddabce5896b33eb693275f470"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
+]
+
+[[package]]
+name = "darling"
+version = "0.20.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e"
+dependencies = [
+ "darling_core",
+ "darling_macro",
+]
+
+[[package]]
+name = "darling_core"
+version = "0.20.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621"
+dependencies = [
+ "fnv",
+ "ident_case",
+ "proc-macro2",
+ "quote",
+ "strsim",
+ "syn 2.0.28",
+]
+
+[[package]]
+name = "darling_macro"
+version = "0.20.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5"
+dependencies = [
+ "darling_core",
+ "quote",
+ "syn 2.0.28",
+]
+
+[[package]]
+name = "deranged"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7684a49fb1af197853ef7b2ee694bc1f5b4179556f1e5710e1760c5db6f5e929"
+dependencies = [
+ "serde",
]
[[package]]
@@ -623,7 +797,7 @@ dependencies = [
"proc-macro2",
"quote",
"rustc_version",
- "syn",
+ "syn 1.0.104",
]
[[package]]
@@ -643,6 +817,7 @@ checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f"
dependencies = [
"block-buffer 0.10.3",
"crypto-common",
+ "subtle",
]
[[package]]
@@ -702,6 +877,12 @@ dependencies = [
"termcolor",
]
+[[package]]
+name = "equivalent"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
+
[[package]]
name = "errno"
version = "0.2.8"
@@ -754,7 +935,7 @@ dependencies = [
"num-traits",
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
]
[[package]]
@@ -828,7 +1009,7 @@ checksum = "bdfb8ce053d86b91919aad980c220b1fb8401a9394410e1c289ed7e66b61835d"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
]
[[package]]
@@ -912,6 +1093,22 @@ dependencies = [
"wasi 0.11.0+wasi-snapshot-preview1",
]
+[[package]]
+name = "ghash"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d930750de5717d2dd0b8c0d42c076c0e884c81a73e6cab859bbd2339c71e3e40"
+dependencies = [
+ "opaque-debug",
+ "polyval",
+]
+
+[[package]]
+name = "gimli"
+version = "0.27.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e"
+
[[package]]
name = "group"
version = "0.2.0"
@@ -935,7 +1132,7 @@ dependencies = [
"futures-sink",
"futures-util",
"http",
- "indexmap",
+ "indexmap 1.9.2",
"slab",
"tokio",
"tokio-util",
@@ -960,13 +1157,19 @@ dependencies = [
"ahash",
]
+[[package]]
+name = "hashbrown"
+version = "0.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a"
+
[[package]]
name = "headers"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f3e372db8e5c0d213e0cd0b9be18be2aca3d44cf2fe30a9d46a65581cd454584"
dependencies = [
- "base64",
+ "base64 0.13.1",
"bitflags",
"bytes",
"headers-core",
@@ -1015,6 +1218,15 @@ version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
+[[package]]
+name = "hmac"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
+dependencies = [
+ "digest 0.10.6",
+]
+
[[package]]
name = "http"
version = "0.2.8"
@@ -1121,6 +1333,12 @@ dependencies = [
"cxx-build",
]
+[[package]]
+name = "ident_case"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
+
[[package]]
name = "idna"
version = "0.3.0"
@@ -1139,6 +1357,28 @@ checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
dependencies = [
"autocfg",
"hashbrown 0.12.3",
+ "serde",
+]
+
+[[package]]
+name = "indexmap"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d"
+dependencies = [
+ "equivalent",
+ "hashbrown 0.14.0",
+ "serde",
+]
+
+[[package]]
+name = "inout"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5"
+dependencies = [
+ "block-padding",
+ "generic-array",
]
[[package]]
@@ -1157,7 +1397,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "46112a93252b123d31a119a8d1a1ac19deac4fac6e0e8b0df58f0d4e5870e63c"
dependencies = [
"libc",
- "windows-sys",
+ "windows-sys 0.42.0",
]
[[package]]
@@ -1169,7 +1409,7 @@ dependencies = [
"hermit-abi 0.2.6",
"io-lifetimes",
"rustix",
- "windows-sys",
+ "windows-sys 0.42.0",
]
[[package]]
@@ -1213,9 +1453,9 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67"
[[package]]
name = "libc"
-version = "0.2.137"
+version = "0.2.147"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89"
+checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
[[package]]
name = "link-cplusplus"
@@ -1288,16 +1528,30 @@ dependencies = [
"unicase",
]
+[[package]]
+name = "minimal-lexical"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
+
+[[package]]
+name = "miniz_oxide"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
+dependencies = [
+ "adler",
+]
+
[[package]]
name = "mio"
-version = "0.8.5"
+version = "0.8.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de"
+checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2"
dependencies = [
"libc",
- "log",
"wasi 0.11.0+wasi-snapshot-preview1",
- "windows-sys",
+ "windows-sys 0.48.0",
]
[[package]]
@@ -1318,6 +1572,16 @@ dependencies = [
"twoway",
]
+[[package]]
+name = "nom"
+version = "7.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
+dependencies = [
+ "memchr",
+ "minimal-lexical",
+]
+
[[package]]
name = "num"
version = "0.4.0"
@@ -1417,23 +1681,32 @@ dependencies = [
[[package]]
name = "num_enum"
-version = "0.5.7"
+version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf5395665662ef45796a4ff5486c5d41d29e0c09640af4c5f17fd94ee2c119c9"
+checksum = "7a015b430d3c108a207fd776d2e2196aaf8b1cf8cf93253e3a097ff3085076a1"
dependencies = [
"num_enum_derive",
]
[[package]]
name = "num_enum_derive"
-version = "0.5.7"
+version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce"
+checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6"
dependencies = [
"proc-macro-crate 1.2.1",
"proc-macro2",
"quote",
- "syn",
+ "syn 2.0.28",
+]
+
+[[package]]
+name = "object"
+version = "0.31.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1"
+dependencies = [
+ "memchr",
]
[[package]]
@@ -1486,7 +1759,30 @@ dependencies = [
"libc",
"redox_syscall",
"smallvec",
- "windows-sys",
+ "windows-sys 0.42.0",
+]
+
+[[package]]
+name = "password-hash"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700"
+dependencies = [
+ "base64ct",
+ "rand_core 0.6.4",
+ "subtle",
+]
+
+[[package]]
+name = "pbkdf2"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917"
+dependencies = [
+ "digest 0.10.6",
+ "hmac",
+ "password-hash",
+ "sha2 0.10.6",
]
[[package]]
@@ -1512,7 +1808,7 @@ checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
]
[[package]]
@@ -1527,6 +1823,18 @@ version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+[[package]]
+name = "polyval"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d52cff9d1d4dee5fe6d03729099f4a310a41179e0a10dbf542039873f2e826fb"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "opaque-debug",
+ "universal-hash",
+]
+
[[package]]
name = "ppv-lite86"
version = "0.2.17"
@@ -1562,7 +1870,7 @@ dependencies = [
"proc-macro-error-attr",
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
"version_check",
]
@@ -1579,9 +1887,9 @@ dependencies = [
[[package]]
name = "proc-macro2"
-version = "1.0.47"
+version = "1.0.66"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725"
+checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9"
dependencies = [
"unicode-ident",
]
@@ -1606,7 +1914,7 @@ dependencies = [
"itertools",
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
]
[[package]]
@@ -1626,7 +1934,7 @@ checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
]
[[package]]
@@ -1637,9 +1945,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
[[package]]
name = "quote"
-version = "1.0.21"
+version = "1.0.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179"
+checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965"
dependencies = [
"proc-macro2",
]
@@ -1822,7 +2130,7 @@ checksum = "6eaedadc88b53e36dd32d940ed21ae4d850d5916f2581526921f553a72ac34c4"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
]
[[package]]
@@ -1843,6 +2151,12 @@ dependencies = [
"serde_json",
]
+[[package]]
+name = "rustc-demangle"
+version = "0.1.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
+
[[package]]
name = "rustc_version"
version = "0.4.0"
@@ -1863,7 +2177,7 @@ dependencies = [
"io-lifetimes",
"libc",
"linux-raw-sys",
- "windows-sys",
+ "windows-sys 0.42.0",
]
[[package]]
@@ -1872,7 +2186,7 @@ version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5eebeaeb360c87bfb72e84abdb3447159c0eaececf1bef2aecd65a8be949d1c9"
dependencies = [
- "base64",
+ "base64 0.13.1",
]
[[package]]
@@ -1943,22 +2257,22 @@ checksum = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4"
[[package]]
name = "serde"
-version = "1.0.148"
+version = "1.0.183"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e53f64bb4ba0191d6d0676e1b141ca55047d83b74f5607e6d8eb88126c52c2dc"
+checksum = "32ac8da02677876d532745a130fc9d8e6edfa81a269b107c5b00829b91d8eb3c"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
-version = "1.0.148"
+version = "1.0.183"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a55492425aa53521babf6137309e7d34c20bbfbbfcfe2c7f3a047fd1f6b92c0c"
+checksum = "aafe972d60b0b9bee71a91b92fee2d4fb3c9d7e8f6b179aa99f27203d99a4816"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 2.0.28",
]
[[package]]
@@ -1984,6 +2298,35 @@ dependencies = [
"serde",
]
+[[package]]
+name = "serde_with"
+version = "3.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1402f54f9a3b9e2efe71c1cea24e648acce55887983553eeb858cf3115acfd49"
+dependencies = [
+ "base64 0.21.2",
+ "chrono",
+ "hex",
+ "indexmap 1.9.2",
+ "indexmap 2.0.0",
+ "serde",
+ "serde_json",
+ "serde_with_macros",
+ "time 0.3.25",
+]
+
+[[package]]
+name = "serde_with_macros"
+version = "3.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9197f1ad0e3c173a0222d3c4404fb04c3afe87e962bcb327af73e8301fa203c7"
+dependencies = [
+ "darling",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.28",
+]
+
[[package]]
name = "sha-1"
version = "0.10.1"
@@ -2072,9 +2415,9 @@ checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"
[[package]]
name = "socket2"
-version = "0.4.7"
+version = "0.4.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd"
+checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662"
dependencies = [
"libc",
"winapi",
@@ -2103,6 +2446,17 @@ dependencies = [
"unicode-ident",
]
+[[package]]
+name = "syn"
+version = "2.0.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
[[package]]
name = "sync_wrapper"
version = "0.1.1"
@@ -2117,7 +2471,7 @@ checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
"unicode-xid",
]
@@ -2161,7 +2515,7 @@ checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
]
[[package]]
@@ -2175,6 +2529,34 @@ dependencies = [
"winapi",
]
+[[package]]
+name = "time"
+version = "0.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0fdd63d58b18d663fbdf70e049f00a22c8e42be082203be7f26589213cd75ea"
+dependencies = [
+ "deranged",
+ "itoa",
+ "serde",
+ "time-core",
+ "time-macros",
+]
+
+[[package]]
+name = "time-core"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb"
+
+[[package]]
+name = "time-macros"
+version = "0.2.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb71511c991639bb078fd5bf97757e03914361c48100d52878b8e52b46fb92cd"
+dependencies = [
+ "time-core",
+]
+
[[package]]
name = "tinyvec"
version = "1.6.0"
@@ -2192,14 +2574,14 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
[[package]]
name = "tokio"
-version = "1.22.0"
+version = "1.29.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d76ce4a75fb488c605c54bf610f221cea8b0dafb53333c1a67e8ee199dcd2ae3"
+checksum = "532826ff75199d5833b9d2c5fe410f29235e25704ee5f0ef599fb51c21f4a4da"
dependencies = [
"autocfg",
+ "backtrace",
"bytes",
"libc",
- "memchr",
"mio",
"num_cpus",
"parking_lot",
@@ -2207,7 +2589,7 @@ dependencies = [
"signal-hook-registry",
"socket2",
"tokio-macros",
- "winapi",
+ "windows-sys 0.48.0",
]
[[package]]
@@ -2222,13 +2604,13 @@ dependencies = [
[[package]]
name = "tokio-macros"
-version = "1.8.2"
+version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8"
+checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 2.0.28",
]
[[package]]
@@ -2286,7 +2668,7 @@ dependencies = [
"async-stream",
"async-trait",
"axum",
- "base64",
+ "base64 0.13.1",
"bytes",
"futures-core",
"futures-util",
@@ -2317,7 +2699,7 @@ checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c"
dependencies = [
"futures-core",
"futures-util",
- "indexmap",
+ "indexmap 1.9.2",
"pin-project",
"pin-project-lite",
"rand 0.8.5",
@@ -2381,7 +2763,7 @@ checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
]
[[package]]
@@ -2415,7 +2797,7 @@ version = "0.17.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e27992fd6a8c29ee7eef28fc78349aa244134e10ad447ce3b9f0ac0ed0fa4ce0"
dependencies = [
- "base64",
+ "base64 0.13.1",
"byteorder",
"bytes",
"http",
@@ -2485,6 +2867,16 @@ version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c"
+[[package]]
+name = "universal-hash"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea"
+dependencies = [
+ "crypto-common",
+ "subtle",
+]
+
[[package]]
name = "url"
version = "2.3.1"
@@ -2598,7 +2990,7 @@ dependencies = [
"once_cell",
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
"wasm-bindgen-shared",
]
@@ -2620,7 +3012,7 @@ checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
@@ -2668,13 +3060,37 @@ version = "0.42.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"
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",
+ "windows_aarch64_gnullvm 0.42.0",
+ "windows_aarch64_msvc 0.42.0",
+ "windows_i686_gnu 0.42.0",
+ "windows_i686_msvc 0.42.0",
+ "windows_x86_64_gnu 0.42.0",
+ "windows_x86_64_gnullvm 0.42.0",
+ "windows_x86_64_msvc 0.42.0",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+dependencies = [
+ "windows-targets",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.48.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f"
+dependencies = [
+ "windows_aarch64_gnullvm 0.48.0",
+ "windows_aarch64_msvc 0.48.0",
+ "windows_i686_gnu 0.48.0",
+ "windows_i686_msvc 0.48.0",
+ "windows_x86_64_gnu 0.48.0",
+ "windows_x86_64_gnullvm 0.48.0",
+ "windows_x86_64_msvc 0.48.0",
]
[[package]]
@@ -2683,42 +3099,84 @@ version = "0.42.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e"
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"
+
[[package]]
name = "windows_aarch64_msvc"
version = "0.42.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4"
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"
+
[[package]]
name = "windows_i686_gnu"
version = "0.42.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7"
+[[package]]
+name = "windows_i686_gnu"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"
+
[[package]]
name = "windows_i686_msvc"
version = "0.42.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246"
+[[package]]
+name = "windows_i686_msvc"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"
+
[[package]]
name = "windows_x86_64_gnu"
version = "0.42.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed"
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1"
+
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.42.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028"
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"
+
[[package]]
name = "windows_x86_64_msvc"
version = "0.42.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5"
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
+
[[package]]
name = "zeroize"
version = "1.3.0"
@@ -2736,6 +3194,6 @@ checksum = "3f8f187641dad4f680d25c4bfc4225b418165984179f26ca76ec4fb6441d3a17"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
"synstructure",
]
diff --git a/signMessage/CHANGELOG.md b/signMessage/CHANGELOG.md
new file mode 100644
index 00000000..93d4a7f3
--- /dev/null
+++ b/signMessage/CHANGELOG.md
@@ -0,0 +1,13 @@
+# Changelog
+
+## 0.2.1
+
+- Migrate dApp from using deprecated JSON-RPC client to new gRPC client.
+
+## 0.2.0
+
+- Add link to source code
+
+## 0.1.0
+
+- Initial signing frontend
diff --git a/signMessage/package.json b/signMessage/package.json
index 67a21541..bc7b0733 100644
--- a/signMessage/package.json
+++ b/signMessage/package.json
@@ -1,10 +1,10 @@
{
- "name": "signMessage",
- "version": "0.1.0",
+ "name": "sign_message",
+ "version": "0.2.1",
"private": true,
"dependencies": {
"@concordium/browser-wallet-api-helpers": "^0.2.0",
- "@concordium/web-sdk": "^0.4.0",
+ "@concordium/web-sdk": "^6.0.0",
"@testing-library/jest-dom": "^5.16.5",
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^13.5.0",
@@ -27,6 +27,9 @@
"typescript": "^4.8.3",
"web-vitals": "^2.1.4"
},
+ "resolutions": {
+ "@concordium/web-sdk": "^6.0.0"
+ },
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
diff --git a/signMessage/src/App.test.tsx b/signMessage/src/App.test.tsx
index 2a68616d..1f03afee 100644
--- a/signMessage/src/App.test.tsx
+++ b/signMessage/src/App.test.tsx
@@ -1,4 +1,3 @@
-import React from 'react';
import { render, screen } from '@testing-library/react';
import App from './App';
diff --git a/signMessage/src/App.tsx b/signMessage/src/App.tsx
index abf6f060..15ab83b2 100644
--- a/signMessage/src/App.tsx
+++ b/signMessage/src/App.tsx
@@ -1,11 +1,9 @@
-import React, {useCallback, useEffect, useState} from 'react';
+import {useCallback, useEffect, useState} from 'react';
import './App.css';
import {Alert, Button, Col, Container, Row, Spinner} from "react-bootstrap";
-import {HttpProvider, JsonRpcClient} from "@concordium/web-sdk";
import {
CHAIN_ID,
- JSON_RPC_URL,
PING_INTERVAL_MS,
WALLET_CONNECT_PROJECT_ID,
} from "./config";
@@ -15,8 +13,7 @@ import SignClient from "@walletconnect/sign-client";
import WalletConnect2, {signMessage, trySend} from "./WalletConnect2";
import {SessionTypes} from "@walletconnect/types";
import BrowserWallet, {trySendTransaction, sign, wrapPromise} from "./BrowserWallet";
-
-const rpc = new JsonRpcClient(new HttpProvider(JSON_RPC_URL));
+import Footer from "./Footer";
type Wallet = "browserwallet" | "walletconnect2";
@@ -156,7 +153,7 @@ export default function App() {
sign(client, account, message),
),
)
- } else if (wallet === "walletconnect2" && rpc) {
+ } else if (wallet === "walletconnect2") {
trySend(
walletconnect2Client,
walletconnect2ConnectedSession,
@@ -165,7 +162,6 @@ export default function App() {
signMessage(
client,
session,
- rpc,
CHAIN_ID,
message,
)
@@ -251,6 +247,7 @@ export default function App() {
+
);
}
diff --git a/signMessage/src/Footer.tsx b/signMessage/src/Footer.tsx
new file mode 100644
index 00000000..9b416545
--- /dev/null
+++ b/signMessage/src/Footer.tsx
@@ -0,0 +1,22 @@
+import { Col } from 'react-bootstrap';
+import packageInfo from '../package.json';
+
+function Footer() {
+ return (
+ <>
+
+
+ Version: {packageInfo.version} |{' '}
+
+ Source code.
+
+
+ >
+ );
+}
+
+export default Footer;
diff --git a/signMessage/src/WalletConnect2.tsx b/signMessage/src/WalletConnect2.tsx
index d6f55a8b..0ccf9952 100644
--- a/signMessage/src/WalletConnect2.tsx
+++ b/signMessage/src/WalletConnect2.tsx
@@ -4,9 +4,6 @@ import QRCodeModal from "@walletconnect/qrcode-modal";
import {SessionTypes} from "@walletconnect/types";
import {Result, ResultAsync} from "neverthrow";
import {resultFromTruthy, resultFromTruthyResult} from "./util";
-import {
- JsonRpcClient,
-} from "@concordium/web-sdk";
import {CHAIN_ID, WALLET_CONNECT_SESSION_NAMESPACE} from "./config";
async function connect(client: SignClient, setConnectedSession: (session: SessionTypes.Struct) => void) {
@@ -61,7 +58,7 @@ function isSignAndSendTransactionError(obj: any): obj is SignAndSendTransactionE
return 'code' in obj && 'message' in obj;
}
-export async function signMessage(signClient: SignClient, session: SessionTypes.Struct, rpcClient: JsonRpcClient, chainId: string, message: string) {
+export async function signMessage(signClient: SignClient, session: SessionTypes.Struct, chainId: string, message: string) {
try {
const signature = await signClient.request({
topic: session.topic,
diff --git a/signMessage/src/config.ts b/signMessage/src/config.ts
index e961a52f..b523a395 100644
--- a/signMessage/src/config.ts
+++ b/signMessage/src/config.ts
@@ -1,11 +1,10 @@
-import {GtuAmount} from "@concordium/web-sdk";
+import {CcdAmount} from "@concordium/web-sdk";
-export const JSON_RPC_URL = "https://json-rpc.testnet.concordium.com";
export const WALLET_CONNECT_PROJECT_ID = "76324905a70fe5c388bab46d3e0564dc";
export const WALLET_CONNECT_SESSION_NAMESPACE = "ccd";
export const DEFAULT_CONTRACT_INDEX = BigInt(81);
export const MAX_CONTRACT_EXECUTION_ENERGY = BigInt(30000);
export const CHAIN_ID = "ccd:testnet";
-export const ZERO_AMOUNT = new GtuAmount(BigInt(0));
+export const ZERO_AMOUNT = new CcdAmount(BigInt(0));
export const CCDSCAN_URL = "testnet.ccdscan.io";
export const PING_INTERVAL_MS = 5000;
diff --git a/signMessage/yarn.lock b/signMessage/yarn.lock
index e211a71f..c794d24f 100644
--- a/signMessage/yarn.lock
+++ b/signMessage/yarn.lock
@@ -1089,33 +1089,38 @@
dependencies:
"@concordium/web-sdk" "^0.4.0"
-"@concordium/common-sdk@2.4.0":
- version "2.4.0"
- resolved "https://registry.npmjs.org/@concordium/common-sdk/-/common-sdk-2.4.0.tgz"
- integrity sha512-PXqdsoY3+WGKYrjJMP30w4Odr/BuzrhY7RjjbvZUMUnG02Dm4vFv/Nt99A7h8/i3Q4Rozrh3XdDNCDygvhS/Aw==
- dependencies:
- "@concordium/rust-bindings" "0.3.0"
- "@noble/ed25519" "^1.6.0"
+"@concordium/common-sdk@9.0.0":
+ version "9.0.0"
+ resolved "https://registry.yarnpkg.com/@concordium/common-sdk/-/common-sdk-9.0.0.tgz#23d81ecaafa7fed487d2b72fe39b6a53a5d2c9a1"
+ integrity sha512-ImWfjuhEOCkBH//Zru+0ThtMtaS/nq76so8a9sfWhs1d89lijYbvOZ7N0rclnlpvWRi8K68MXgqhCnoKhgotbQ==
+ dependencies:
+ "@concordium/rust-bindings" "1.1.0"
+ "@grpc/grpc-js" "^1.3.4"
+ "@noble/ed25519" "^1.7.1"
+ "@protobuf-ts/runtime-rpc" "^2.8.2"
"@scure/bip39" "^1.1.0"
bs58check "^2.1.2"
buffer "^6.0.3"
cross-fetch "3.1.5"
hash.js "^1.1.7"
+ iso-3166-1 "^2.1.1"
json-bigint "^1.0.0"
uuid "^8.3.2"
-"@concordium/rust-bindings@0.3.0":
- version "0.3.0"
- resolved "https://registry.npmjs.org/@concordium/rust-bindings/-/rust-bindings-0.3.0.tgz"
- integrity sha512-Y4Xj7K+RTnNW86ZQ4bTed7iCZicEIbOwamJPPhWToMGuChGm1tcCFaOHuhGWvW1YziwxzlYAfopQJyxGrN22TA==
+"@concordium/rust-bindings@1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@concordium/rust-bindings/-/rust-bindings-1.1.0.tgz#8f6c644edb2c56f2926c1e96a1717f91d6ed3af6"
+ integrity sha512-A180edv0kzjtedZFcR4a03kjeGqIi0ABLTbE20tyPDHDjnMMi+4+k/Z53nsjepzF/609h7bh1JGVBmfkBRCAyA==
-"@concordium/web-sdk@^0.4.0":
- version "0.4.0"
- resolved "https://registry.npmjs.org/@concordium/web-sdk/-/web-sdk-0.4.0.tgz"
- integrity sha512-rqD70RW+IRgKkGyNRiD4Xsk+w9xFS7penRECx/tkUcYxvIRc2ewTbdYGN28up57/M6hCcUEyO3jeJTa31kmM1Q==
+"@concordium/web-sdk@^0.4.0", "@concordium/web-sdk@^6.0.0":
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/@concordium/web-sdk/-/web-sdk-6.0.0.tgz#84eeee6562c26d5eb14bd116ddbc8466142f84fb"
+ integrity sha512-Q0qf6vAF1K7qNd1ctZtmBeESg/e98RmCg9NCPWj4j3ESyL+A2Pbt65cnYY01TVOT4Sz7mH1DsQxNsdgPQAUvCQ==
dependencies:
- "@concordium/common-sdk" "2.4.0"
- "@concordium/rust-bindings" "0.3.0"
+ "@concordium/common-sdk" "9.0.0"
+ "@concordium/rust-bindings" "1.1.0"
+ "@grpc/grpc-js" "^1.3.4"
+ "@protobuf-ts/grpcweb-transport" "^2.8.2"
buffer "^6.0.3"
process "^0.11.10"
@@ -1245,6 +1250,25 @@
minimatch "^3.1.2"
strip-json-comments "^3.1.1"
+"@grpc/grpc-js@^1.3.4":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.9.0.tgz#bdb599e339adabb16aa7243e70c311f75a572867"
+ integrity sha512-H8+iZh+kCE6VR/Krj6W28Y/ZlxoZ1fOzsNt77nrdE3knkbSelW1Uus192xOFCxHyeszLj8i4APQkSIXjAoOxXg==
+ dependencies:
+ "@grpc/proto-loader" "^0.7.0"
+ "@types/node" ">=12.12.47"
+
+"@grpc/proto-loader@^0.7.0":
+ version "0.7.8"
+ resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.7.8.tgz#c050bbeae5f000a1919507f195a1b094e218036e"
+ integrity sha512-GU12e2c8dmdXb7XUlOgYWZ2o2i+z9/VeACkxTA/zzAe2IjclC5PnVL0lpgjhrqfpDYHzM8B1TF6pqWegMYAzlA==
+ dependencies:
+ "@types/long" "^4.0.1"
+ lodash.camelcase "^4.3.0"
+ long "^4.0.0"
+ protobufjs "^7.2.4"
+ yargs "^17.7.2"
+
"@hapi/bourne@^2.0.0":
version "2.1.0"
resolved "https://registry.npmjs.org/@hapi/bourne/-/bourne-2.1.0.tgz"
@@ -1548,10 +1572,10 @@
resolved "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz"
integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==
-"@noble/ed25519@^1.6.0":
- version "1.7.1"
- resolved "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.7.1.tgz"
- integrity sha512-Rk4SkJFaXZiznFyC/t77Q0NKS4FL7TLJJsVG2V2oiEq3kJVeTdxysEe/yRWSpnWMe808XRDJ+VFh5pt/FN5plw==
+"@noble/ed25519@^1.7.1":
+ version "1.7.3"
+ resolved "https://registry.yarnpkg.com/@noble/ed25519/-/ed25519-1.7.3.tgz#57e1677bf6885354b466c38e2b620c62f45a7123"
+ integrity sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ==
"@noble/hashes@~1.1.1":
version "1.1.2"
@@ -1599,6 +1623,79 @@
resolved "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz"
integrity sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==
+"@protobuf-ts/grpcweb-transport@^2.8.2":
+ version "2.9.1"
+ resolved "https://registry.yarnpkg.com/@protobuf-ts/grpcweb-transport/-/grpcweb-transport-2.9.1.tgz#523647acbf98de54b291a57e770e3127820ba879"
+ integrity sha512-42bvBX312qhPlosMNTZE9XI+lt58ISM5vEJKv/wOx2Fu70J0TdlLa4Bjz8xcuRlv4Pq1CA+94DC1IgNxNRsQdg==
+ dependencies:
+ "@protobuf-ts/runtime" "^2.9.1"
+ "@protobuf-ts/runtime-rpc" "^2.9.1"
+
+"@protobuf-ts/runtime-rpc@^2.8.2", "@protobuf-ts/runtime-rpc@^2.9.1":
+ version "2.9.1"
+ resolved "https://registry.yarnpkg.com/@protobuf-ts/runtime-rpc/-/runtime-rpc-2.9.1.tgz#6a1c8f189005de5dc6bce7a18751ef3fe304c8eb"
+ integrity sha512-pzO20J6s07LTWcj8hKAXh/dAacU5HIVir6SANKXXH8G0pn0VIIB4FFECq5Hbv25/8PQoOGZ7iApq/DMHaSjGhg==
+ dependencies:
+ "@protobuf-ts/runtime" "^2.9.1"
+
+"@protobuf-ts/runtime@^2.9.1":
+ version "2.9.1"
+ resolved "https://registry.yarnpkg.com/@protobuf-ts/runtime/-/runtime-2.9.1.tgz#faec7653ca9c01ced49b0ee01818d46b4b3cf2ac"
+ integrity sha512-ZTc8b+pQ6bwxZa3qg9/IO/M/brRkvr0tic9cSGgAsDByfPrtatT2300wTIRLDk8X9WTW1tT+FhyqmcrbMHTeww==
+
+"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf"
+ integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==
+
+"@protobufjs/base64@^1.1.2":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735"
+ integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==
+
+"@protobufjs/codegen@^2.0.4":
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb"
+ integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==
+
+"@protobufjs/eventemitter@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70"
+ integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==
+
+"@protobufjs/fetch@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45"
+ integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==
+ dependencies:
+ "@protobufjs/aspromise" "^1.1.1"
+ "@protobufjs/inquire" "^1.1.0"
+
+"@protobufjs/float@^1.0.2":
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1"
+ integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==
+
+"@protobufjs/inquire@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089"
+ integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==
+
+"@protobufjs/path@^1.1.2":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d"
+ integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==
+
+"@protobufjs/pool@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54"
+ integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==
+
+"@protobufjs/utf8@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570"
+ integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==
+
"@react-aria/ssr@^3.2.0":
version "3.3.0"
resolved "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.3.0.tgz"
@@ -2194,6 +2291,11 @@
resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz"
integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==
+"@types/long@^4.0.1":
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a"
+ integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==
+
"@types/mime@*":
version "3.0.1"
resolved "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz"
@@ -2204,6 +2306,11 @@
resolved "https://registry.npmjs.org/@types/node/-/node-16.11.59.tgz"
integrity sha512-6u+36Dj3aDzhfBVUf/mfmc92OEdzQ2kx2jcXGdigfl70E/neV21ZHE6UCz4MDzTRcVqGAM27fk+DLXvyDsn3Jw==
+"@types/node@>=12.12.47", "@types/node@>=13.7.0":
+ version "20.5.0"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-20.5.0.tgz#7fc8636d5f1aaa3b21e6245e97d56b7f56702313"
+ integrity sha512-Mgq7eCtoTjT89FqNoTzzXg2XvCi5VMhRV6+I2aYanc6kQCBImeNaAYRs/DyoVqk1YEUJK5gN9VO7HRIdz4Wo3Q==
+
"@types/parse-json@^4.0.0":
version "4.0.0"
resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz"
@@ -3606,6 +3713,15 @@ cliui@^7.0.2:
strip-ansi "^6.0.0"
wrap-ansi "^7.0.0"
+cliui@^8.0.1:
+ version "8.0.1"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa"
+ integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==
+ dependencies:
+ string-width "^4.2.0"
+ strip-ansi "^6.0.1"
+ wrap-ansi "^7.0.0"
+
co@^4.6.0:
version "4.6.0"
resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz"
@@ -5797,6 +5913,11 @@ isexe@^2.0.0:
resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
+iso-3166-1@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/iso-3166-1/-/iso-3166-1-2.1.1.tgz#79b80d2aebc3c9528d792bdbb8316c912fe37c68"
+ integrity sha512-RZxXf8cw5Y8LyHZIwIRvKw8sWTIHh2/txBT+ehO0QroesVfnz3JNFFX4i/OC/Yuv2bDIVYrHna5PMvjtpefq5w==
+
istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0:
version "3.2.0"
resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz"
@@ -6584,6 +6705,11 @@ locate-path@^6.0.0:
dependencies:
p-locate "^5.0.0"
+lodash.camelcase@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
+ integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==
+
lodash.debounce@^4.0.8:
version "4.0.8"
resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz"
@@ -6619,6 +6745,16 @@ lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0:
resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
+long@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28"
+ integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==
+
+long@^5.0.0:
+ version "5.2.3"
+ resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1"
+ integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==
+
loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
version "1.4.0"
resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz"
@@ -7938,6 +8074,24 @@ prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1:
object-assign "^4.1.1"
react-is "^16.13.1"
+protobufjs@^7.2.4:
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.4.tgz#3fc1ec0cdc89dd91aef9ba6037ba07408485c3ae"
+ integrity sha512-AT+RJgD2sH8phPmCf7OUZR8xGdcJRga4+1cOaXJ64hvcSkVhNcRHOwIxUatPH15+nj59WAGTDv3LSGZPEQbJaQ==
+ dependencies:
+ "@protobufjs/aspromise" "^1.1.2"
+ "@protobufjs/base64" "^1.1.2"
+ "@protobufjs/codegen" "^2.0.4"
+ "@protobufjs/eventemitter" "^1.1.0"
+ "@protobufjs/fetch" "^1.1.0"
+ "@protobufjs/float" "^1.0.2"
+ "@protobufjs/inquire" "^1.1.0"
+ "@protobufjs/path" "^1.1.2"
+ "@protobufjs/pool" "^1.1.0"
+ "@protobufjs/utf8" "^1.1.0"
+ "@types/node" ">=13.7.0"
+ long "^5.0.0"
+
proxy-addr@~2.0.7:
version "2.0.7"
resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz"
@@ -8885,7 +9039,7 @@ string-width@^3.0.0, string-width@^3.1.0:
is-fullwidth-code-point "^2.0.0"
strip-ansi "^5.1.0"
-string-width@^4.1.0, string-width@^4.2.0:
+string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
version "4.2.3"
resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@@ -10018,6 +10172,11 @@ yargs-parser@^20.2.2:
resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz"
integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
+yargs-parser@^21.1.1:
+ version "21.1.1"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"
+ integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
+
yargs@^13.2.4:
version "13.3.2"
resolved "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz"
@@ -10047,6 +10206,19 @@ yargs@^16.2.0:
y18n "^5.0.5"
yargs-parser "^20.2.2"
+yargs@^17.7.2:
+ version "17.7.2"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269"
+ integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==
+ dependencies:
+ cliui "^8.0.1"
+ escalade "^3.1.1"
+ get-caller-file "^2.0.5"
+ require-directory "^2.1.1"
+ string-width "^4.2.3"
+ y18n "^5.0.5"
+ yargs-parser "^21.1.1"
+
yocto-queue@^0.1.0:
version "0.1.0"
resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz"
diff --git a/sponsoredTransactions/README.md b/sponsoredTransactions/README.md
index fd478fe3..250393c5 100644
--- a/sponsoredTransactions/README.md
+++ b/sponsoredTransactions/README.md
@@ -44,7 +44,7 @@ Note: To get your `ACCOUNT_KEY_FILE` (the `3PXwJYYPf6fyVb4GJquxSZU8puxrHfzc4Xogd
See the [docker file](./Dockerfile) to explore the environment variables that can set.
-Note: Use the same smart contract index for the frontend and backend. In other words, use the smart contract index from the `./frontend/src/constants.ts` file in the dockerfile.
+Note: Use the same smart contract index for the frontend and backend. In other words, use the smart contract index from the `./frontend/package.json` file in the dockerfile.
diff --git a/sponsoredTransactions/backend/CHANGELOG.md b/sponsoredTransactions/backend/CHANGELOG.md
new file mode 100644
index 00000000..c5ede65f
--- /dev/null
+++ b/sponsoredTransactions/backend/CHANGELOG.md
@@ -0,0 +1,9 @@
+## Unreleased changes
+
+## 2.0.0
+
+- Use `AccountSignatures` type for the input parameter to the `permit` function. The sponsored transaction smart contract uses the `check_account_signature` host function with the `AccountSignatures` type as input parameter to verify signatures in the smart contract now.
+
+## 1.0.0
+
+- Initial sponsored transaction back end.
diff --git a/sponsoredTransactions/backend/Cargo.lock b/sponsoredTransactions/backend/Cargo.lock
index 5d0f6112..b77db369 100644
--- a/sponsoredTransactions/backend/Cargo.lock
+++ b/sponsoredTransactions/backend/Cargo.lock
@@ -2,6 +2,56 @@
# It is not intended for manual editing.
version = 3
+[[package]]
+name = "addr2line"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3"
+dependencies = [
+ "gimli",
+]
+
+[[package]]
+name = "adler"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
+
+[[package]]
+name = "aead"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0"
+dependencies = [
+ "crypto-common",
+ "generic-array",
+]
+
+[[package]]
+name = "aes"
+version = "0.8.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2"
+dependencies = [
+ "cfg-if",
+ "cipher",
+ "cpufeatures",
+]
+
+[[package]]
+name = "aes-gcm"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "209b47e8954a928e1d72e86eca7000ebb6655fe1436d33eefc2201cad027e237"
+dependencies = [
+ "aead",
+ "aes",
+ "cipher",
+ "ctr",
+ "ghash",
+ "subtle",
+]
+
[[package]]
name = "ahash"
version = "0.7.6"
@@ -22,6 +72,12 @@ dependencies = [
"memchr",
]
+[[package]]
+name = "android-tzdata"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
+
[[package]]
name = "android_system_properties"
version = "0.1.5"
@@ -61,7 +117,7 @@ checksum = "10f203db73a71dfa2fb6dd22763990fa26f3d2625a6da2da900d23b87d26be27"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
]
[[package]]
@@ -72,7 +128,7 @@ checksum = "31e6e93155431f3931513b243d371981bb2770112b370c82745a1d19d2f99364"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
]
[[package]]
@@ -138,12 +194,39 @@ dependencies = [
"tower-service",
]
+[[package]]
+name = "backtrace"
+version = "0.3.68"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12"
+dependencies = [
+ "addr2line",
+ "cc",
+ "cfg-if",
+ "libc",
+ "miniz_oxide",
+ "object",
+ "rustc-demangle",
+]
+
[[package]]
name = "base64"
version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
+[[package]]
+name = "base64"
+version = "0.21.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d"
+
+[[package]]
+name = "base64ct"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b"
+
[[package]]
name = "bitflags"
version = "1.3.2"
@@ -168,6 +251,15 @@ dependencies = [
"generic-array",
]
+[[package]]
+name = "block-padding"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93"
+dependencies = [
+ "generic-array",
+]
+
[[package]]
name = "borsh"
version = "0.9.3"
@@ -188,7 +280,7 @@ dependencies = [
"borsh-schema-derive-internal",
"proc-macro-crate 0.1.5",
"proc-macro2",
- "syn",
+ "syn 1.0.104",
]
[[package]]
@@ -199,7 +291,7 @@ checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
]
[[package]]
@@ -210,7 +302,7 @@ checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
]
[[package]]
@@ -256,7 +348,7 @@ checksum = "13e576ebe98e605500b3c8041bb888e966653577172df6dd97398714eb30b9bf"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
]
[[package]]
@@ -271,6 +363,15 @@ version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dfb24e866b15a1af2a1b663f10c6b6b8f397a84aadb828f12e5b289ec23a3a3c"
+[[package]]
+name = "cbc"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6"
+dependencies = [
+ "cipher",
+]
+
[[package]]
name = "cc"
version = "1.0.77"
@@ -285,20 +386,30 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "chrono"
-version = "0.4.23"
+version = "0.4.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "16b0a3d9ed01224b22057780a37bb8c5dbfe1be8ba48678e7bf57ec4b385411f"
+checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5"
dependencies = [
+ "android-tzdata",
"iana-time-zone",
"js-sys",
- "num-integer",
"num-traits",
"serde",
- "time",
+ "time 0.1.45",
"wasm-bindgen",
"winapi",
]
+[[package]]
+name = "cipher"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad"
+dependencies = [
+ "crypto-common",
+ "inout",
+]
+
[[package]]
name = "clap"
version = "4.0.29"
@@ -324,7 +435,7 @@ dependencies = [
"proc-macro-error",
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
]
[[package]]
@@ -348,8 +459,9 @@ dependencies = [
[[package]]
name = "concordium-contracts-common"
-version = "5.3.1"
+version = "7.1.0"
dependencies = [
+ "base64 0.21.2",
"bs58",
"chrono",
"concordium-contracts-common-derive",
@@ -367,17 +479,18 @@ dependencies = [
[[package]]
name = "concordium-contracts-common-derive"
-version = "1.0.1"
+version = "3.0.0"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 2.0.27",
]
[[package]]
name = "concordium-rust-sdk"
-version = "2.3.0"
+version = "3.0.0"
dependencies = [
+ "aes-gcm",
"anyhow",
"chrono",
"concordium-smart-contract-engine",
@@ -386,11 +499,11 @@ dependencies = [
"ed25519-dalek",
"futures",
"hex",
+ "http",
"num",
"num-bigint 0.4.3",
"num-traits",
"prost",
- "prost-derive",
"rand 0.7.3",
"rust_decimal",
"semver",
@@ -404,7 +517,7 @@ dependencies = [
[[package]]
name = "concordium-smart-contract-engine"
-version = "1.0.1"
+version = "2.0.0"
dependencies = [
"anyhow",
"byteorder",
@@ -427,7 +540,7 @@ dependencies = [
[[package]]
name = "concordium-wasm"
-version = "1.0.0"
+version = "2.0.0"
dependencies = [
"anyhow",
"concordium-contracts-common",
@@ -438,11 +551,14 @@ dependencies = [
[[package]]
name = "concordium_base"
-version = "1.0.0"
+version = "2.0.0"
dependencies = [
+ "aes",
"anyhow",
+ "base64 0.13.1",
"bs58",
"byteorder",
+ "cbc",
"chrono",
"concordium-contracts-common",
"concordium_base_derive",
@@ -453,19 +569,23 @@ dependencies = [
"ff",
"group",
"hex",
+ "hmac",
"itertools",
"leb128",
"libc",
+ "nom",
"num",
"num-bigint 0.4.3",
"num-traits",
"pairing",
+ "pbkdf2",
"rand 0.7.3",
"rand_core 0.5.1",
"rayon",
"rust_decimal",
"serde",
"serde_json",
+ "serde_with",
"sha2 0.10.6",
"sha3",
"subtle",
@@ -479,7 +599,7 @@ version = "1.0.0"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 2.0.27",
]
[[package]]
@@ -488,6 +608,16 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e"
+[[package]]
+name = "core-foundation"
+version = "0.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
[[package]]
name = "core-foundation-sys"
version = "0.8.3"
@@ -553,9 +683,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
dependencies = [
"generic-array",
+ "rand_core 0.6.4",
"typenum",
]
+[[package]]
+name = "ctr"
+version = "0.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835"
+dependencies = [
+ "cipher",
+]
+
[[package]]
name = "curve25519-dalek"
version = "3.2.1"
@@ -593,7 +733,7 @@ dependencies = [
"proc-macro2",
"quote",
"scratch",
- "syn",
+ "syn 1.0.104",
]
[[package]]
@@ -610,7 +750,51 @@ checksum = "a08a6e2fcc370a089ad3b4aaf54db3b1b4cee38ddabce5896b33eb693275f470"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
+]
+
+[[package]]
+name = "darling"
+version = "0.20.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e"
+dependencies = [
+ "darling_core",
+ "darling_macro",
+]
+
+[[package]]
+name = "darling_core"
+version = "0.20.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621"
+dependencies = [
+ "fnv",
+ "ident_case",
+ "proc-macro2",
+ "quote",
+ "strsim",
+ "syn 2.0.27",
+]
+
+[[package]]
+name = "darling_macro"
+version = "0.20.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5"
+dependencies = [
+ "darling_core",
+ "quote",
+ "syn 2.0.27",
+]
+
+[[package]]
+name = "deranged"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7684a49fb1af197853ef7b2ee694bc1f5b4179556f1e5710e1760c5db6f5e929"
+dependencies = [
+ "serde",
]
[[package]]
@@ -623,7 +807,7 @@ dependencies = [
"proc-macro2",
"quote",
"rustc_version",
- "syn",
+ "syn 1.0.104",
]
[[package]]
@@ -643,6 +827,7 @@ checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f"
dependencies = [
"block-buffer 0.10.3",
"crypto-common",
+ "subtle",
]
[[package]]
@@ -754,7 +939,7 @@ dependencies = [
"num-traits",
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
]
[[package]]
@@ -828,7 +1013,7 @@ checksum = "bdfb8ce053d86b91919aad980c220b1fb8401a9394410e1c289ed7e66b61835d"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
]
[[package]]
@@ -893,6 +1078,22 @@ dependencies = [
"wasi 0.11.0+wasi-snapshot-preview1",
]
+[[package]]
+name = "ghash"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d930750de5717d2dd0b8c0d42c076c0e884c81a73e6cab859bbd2339c71e3e40"
+dependencies = [
+ "opaque-debug",
+ "polyval",
+]
+
+[[package]]
+name = "gimli"
+version = "0.27.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e"
+
[[package]]
name = "group"
version = "0.2.0"
@@ -947,7 +1148,7 @@ version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f3e372db8e5c0d213e0cd0b9be18be2aca3d44cf2fe30a9d46a65581cd454584"
dependencies = [
- "base64",
+ "base64 0.13.1",
"bitflags",
"bytes",
"headers-core",
@@ -996,6 +1197,15 @@ version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
+[[package]]
+name = "hmac"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
+dependencies = [
+ "digest 0.10.6",
+]
+
[[package]]
name = "http"
version = "0.2.8"
@@ -1102,6 +1312,12 @@ dependencies = [
"cxx-build",
]
+[[package]]
+name = "ident_case"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
+
[[package]]
name = "idna"
version = "0.3.0"
@@ -1120,6 +1336,17 @@ checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
dependencies = [
"autocfg",
"hashbrown 0.12.3",
+ "serde",
+]
+
+[[package]]
+name = "inout"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5"
+dependencies = [
+ "block-padding",
+ "generic-array",
]
[[package]]
@@ -1138,7 +1365,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "46112a93252b123d31a119a8d1a1ac19deac4fac6e0e8b0df58f0d4e5870e63c"
dependencies = [
"libc",
- "windows-sys",
+ "windows-sys 0.42.0",
]
[[package]]
@@ -1150,7 +1377,7 @@ dependencies = [
"hermit-abi 0.2.6",
"io-lifetimes",
"rustix",
- "windows-sys",
+ "windows-sys 0.42.0",
]
[[package]]
@@ -1194,9 +1421,9 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67"
[[package]]
name = "libc"
-version = "0.2.137"
+version = "0.2.147"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89"
+checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
[[package]]
name = "link-cplusplus"
@@ -1269,16 +1496,30 @@ dependencies = [
"unicase",
]
+[[package]]
+name = "minimal-lexical"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
+
+[[package]]
+name = "miniz_oxide"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
+dependencies = [
+ "adler",
+]
+
[[package]]
name = "mio"
-version = "0.8.5"
+version = "0.8.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de"
+checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2"
dependencies = [
"libc",
- "log",
"wasi 0.11.0+wasi-snapshot-preview1",
- "windows-sys",
+ "windows-sys 0.48.0",
]
[[package]]
@@ -1299,6 +1540,16 @@ dependencies = [
"twoway",
]
+[[package]]
+name = "nom"
+version = "7.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
+dependencies = [
+ "memchr",
+ "minimal-lexical",
+]
+
[[package]]
name = "num"
version = "0.4.0"
@@ -1398,23 +1649,32 @@ dependencies = [
[[package]]
name = "num_enum"
-version = "0.5.7"
+version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf5395665662ef45796a4ff5486c5d41d29e0c09640af4c5f17fd94ee2c119c9"
+checksum = "7a015b430d3c108a207fd776d2e2196aaf8b1cf8cf93253e3a097ff3085076a1"
dependencies = [
"num_enum_derive",
]
[[package]]
name = "num_enum_derive"
-version = "0.5.7"
+version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce"
+checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6"
dependencies = [
"proc-macro-crate 1.2.1",
"proc-macro2",
"quote",
- "syn",
+ "syn 2.0.27",
+]
+
+[[package]]
+name = "object"
+version = "0.31.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1"
+dependencies = [
+ "memchr",
]
[[package]]
@@ -1429,6 +1689,12 @@ version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
+[[package]]
+name = "openssl-probe"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
+
[[package]]
name = "os_str_bytes"
version = "6.4.1"
@@ -1467,7 +1733,30 @@ dependencies = [
"libc",
"redox_syscall",
"smallvec",
- "windows-sys",
+ "windows-sys 0.42.0",
+]
+
+[[package]]
+name = "password-hash"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700"
+dependencies = [
+ "base64ct",
+ "rand_core 0.6.4",
+ "subtle",
+]
+
+[[package]]
+name = "pbkdf2"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917"
+dependencies = [
+ "digest 0.10.6",
+ "hmac",
+ "password-hash",
+ "sha2 0.10.6",
]
[[package]]
@@ -1493,7 +1782,7 @@ checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
]
[[package]]
@@ -1508,6 +1797,18 @@ version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+[[package]]
+name = "polyval"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d52cff9d1d4dee5fe6d03729099f4a310a41179e0a10dbf542039873f2e826fb"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "opaque-debug",
+ "universal-hash",
+]
+
[[package]]
name = "ppv-lite86"
version = "0.2.17"
@@ -1543,7 +1844,7 @@ dependencies = [
"proc-macro-error-attr",
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
"version_check",
]
@@ -1560,9 +1861,9 @@ dependencies = [
[[package]]
name = "proc-macro2"
-version = "1.0.47"
+version = "1.0.66"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725"
+checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9"
dependencies = [
"unicode-ident",
]
@@ -1587,7 +1888,7 @@ dependencies = [
"itertools",
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
]
[[package]]
@@ -1607,7 +1908,7 @@ checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
]
[[package]]
@@ -1618,9 +1919,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
[[package]]
name = "quote"
-version = "1.0.21"
+version = "1.0.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179"
+checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965"
dependencies = [
"proc-macro2",
]
@@ -1781,6 +2082,21 @@ dependencies = [
"bytecheck",
]
+[[package]]
+name = "ring"
+version = "0.16.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc"
+dependencies = [
+ "cc",
+ "libc",
+ "once_cell",
+ "spin",
+ "untrusted",
+ "web-sys",
+ "winapi",
+]
+
[[package]]
name = "rkyv"
version = "0.7.39"
@@ -1803,7 +2119,7 @@ checksum = "6eaedadc88b53e36dd32d940ed21ae4d850d5916f2581526921f553a72ac34c4"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
]
[[package]]
@@ -1824,6 +2140,12 @@ dependencies = [
"serde_json",
]
+[[package]]
+name = "rustc-demangle"
+version = "0.1.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
+
[[package]]
name = "rustc_version"
version = "0.4.0"
@@ -1844,7 +2166,31 @@ dependencies = [
"io-lifetimes",
"libc",
"linux-raw-sys",
- "windows-sys",
+ "windows-sys 0.42.0",
+]
+
+[[package]]
+name = "rustls"
+version = "0.20.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f"
+dependencies = [
+ "log",
+ "ring",
+ "sct",
+ "webpki",
+]
+
+[[package]]
+name = "rustls-native-certs"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00"
+dependencies = [
+ "openssl-probe",
+ "rustls-pemfile 1.0.3",
+ "schannel",
+ "security-framework",
]
[[package]]
@@ -1853,7 +2199,16 @@ version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5eebeaeb360c87bfb72e84abdb3447159c0eaececf1bef2aecd65a8be949d1c9"
dependencies = [
- "base64",
+ "base64 0.13.1",
+]
+
+[[package]]
+name = "rustls-pemfile"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2"
+dependencies = [
+ "base64 0.21.2",
]
[[package]]
@@ -1874,6 +2229,15 @@ version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072"
+[[package]]
+name = "schannel"
+version = "0.1.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88"
+dependencies = [
+ "windows-sys 0.48.0",
+]
+
[[package]]
name = "scoped-tls"
version = "1.0.1"
@@ -1892,6 +2256,16 @@ version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c8132065adcfd6e02db789d9285a0deb2f3fcb04002865ab67d5fb103533898"
+[[package]]
+name = "sct"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4"
+dependencies = [
+ "ring",
+ "untrusted",
+]
+
[[package]]
name = "seahash"
version = "4.1.0"
@@ -1916,6 +2290,29 @@ dependencies = [
"cc",
]
+[[package]]
+name = "security-framework"
+version = "2.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c4437699b6d34972de58652c68b98cb5b53a4199ab126db8e20ec8ded29a721"
+dependencies = [
+ "bitflags",
+ "core-foundation",
+ "core-foundation-sys",
+ "libc",
+ "security-framework-sys",
+]
+
+[[package]]
+name = "security-framework-sys"
+version = "2.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "31c9bb296072e961fcbd8853511dd39c2d8be2deb1e17c6860b1d30732b323b4"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
[[package]]
name = "semver"
version = "1.0.14"
@@ -1924,22 +2321,22 @@ checksum = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4"
[[package]]
name = "serde"
-version = "1.0.148"
+version = "1.0.179"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e53f64bb4ba0191d6d0676e1b141ca55047d83b74f5607e6d8eb88126c52c2dc"
+checksum = "0a5bf42b8d227d4abf38a1ddb08602e229108a517cd4e5bb28f9c7eaafdce5c0"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
-version = "1.0.148"
+version = "1.0.179"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a55492425aa53521babf6137309e7d34c20bbfbbfcfe2c7f3a047fd1f6b92c0c"
+checksum = "741e124f5485c7e60c03b043f79f320bff3527f4bbf12cf3831750dc46a0ec2c"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 2.0.27",
]
[[package]]
@@ -1965,6 +2362,34 @@ dependencies = [
"serde",
]
+[[package]]
+name = "serde_with"
+version = "3.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "21e47d95bc83ed33b2ecf84f4187ad1ab9685d18ff28db000c99deac8ce180e3"
+dependencies = [
+ "base64 0.21.2",
+ "chrono",
+ "hex",
+ "indexmap",
+ "serde",
+ "serde_json",
+ "serde_with_macros",
+ "time 0.3.25",
+]
+
+[[package]]
+name = "serde_with_macros"
+version = "3.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ea3cee93715c2e266b9338b7544da68a9f24e227722ba482bd1c024367c77c65"
+dependencies = [
+ "darling",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.27",
+]
+
[[package]]
name = "sha-1"
version = "0.10.1"
@@ -2053,17 +2478,23 @@ checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"
[[package]]
name = "socket2"
-version = "0.4.7"
+version = "0.4.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd"
+checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662"
dependencies = [
"libc",
"winapi",
]
+[[package]]
+name = "spin"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
+
[[package]]
name = "sponsored-transaction-backend"
-version = "1.0.0"
+version = "2.0.0"
dependencies = [
"anyhow",
"chrono",
@@ -2077,6 +2508,7 @@ dependencies = [
"serde_json",
"thiserror",
"tokio",
+ "tonic",
"uuid",
"warp",
]
@@ -2104,6 +2536,17 @@ dependencies = [
"unicode-ident",
]
+[[package]]
+name = "syn"
+version = "2.0.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b60f673f44a8255b9c8c657daf66a596d435f2da81a555b06dc644d080ba45e0"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
[[package]]
name = "sync_wrapper"
version = "0.1.1"
@@ -2118,7 +2561,7 @@ checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
"unicode-xid",
]
@@ -2162,7 +2605,7 @@ checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
]
[[package]]
@@ -2176,6 +2619,34 @@ dependencies = [
"winapi",
]
+[[package]]
+name = "time"
+version = "0.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0fdd63d58b18d663fbdf70e049f00a22c8e42be082203be7f26589213cd75ea"
+dependencies = [
+ "deranged",
+ "itoa",
+ "serde",
+ "time-core",
+ "time-macros",
+]
+
+[[package]]
+name = "time-core"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb"
+
+[[package]]
+name = "time-macros"
+version = "0.2.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb71511c991639bb078fd5bf97757e03914361c48100d52878b8e52b46fb92cd"
+dependencies = [
+ "time-core",
+]
+
[[package]]
name = "tinyvec"
version = "1.6.0"
@@ -2193,14 +2664,14 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
[[package]]
name = "tokio"
-version = "1.22.0"
+version = "1.29.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d76ce4a75fb488c605c54bf610f221cea8b0dafb53333c1a67e8ee199dcd2ae3"
+checksum = "532826ff75199d5833b9d2c5fe410f29235e25704ee5f0ef599fb51c21f4a4da"
dependencies = [
"autocfg",
+ "backtrace",
"bytes",
"libc",
- "memchr",
"mio",
"num_cpus",
"parking_lot",
@@ -2208,7 +2679,7 @@ dependencies = [
"signal-hook-registry",
"socket2",
"tokio-macros",
- "winapi",
+ "windows-sys 0.48.0",
]
[[package]]
@@ -2223,13 +2694,24 @@ dependencies = [
[[package]]
name = "tokio-macros"
-version = "1.8.2"
+version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8"
+checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 2.0.27",
+]
+
+[[package]]
+name = "tokio-rustls"
+version = "0.23.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59"
+dependencies = [
+ "rustls",
+ "tokio",
+ "webpki",
]
[[package]]
@@ -2287,7 +2769,7 @@ dependencies = [
"async-stream",
"async-trait",
"axum",
- "base64",
+ "base64 0.13.1",
"bytes",
"futures-core",
"futures-util",
@@ -2300,7 +2782,10 @@ dependencies = [
"pin-project",
"prost",
"prost-derive",
+ "rustls-native-certs",
+ "rustls-pemfile 1.0.3",
"tokio",
+ "tokio-rustls",
"tokio-stream",
"tokio-util",
"tower",
@@ -2382,7 +2867,7 @@ checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
]
[[package]]
@@ -2416,7 +2901,7 @@ version = "0.17.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e27992fd6a8c29ee7eef28fc78349aa244134e10ad447ce3b9f0ac0ed0fa4ce0"
dependencies = [
- "base64",
+ "base64 0.13.1",
"byteorder",
"bytes",
"http",
@@ -2486,6 +2971,22 @@ version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c"
+[[package]]
+name = "universal-hash"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea"
+dependencies = [
+ "crypto-common",
+ "subtle",
+]
+
+[[package]]
+name = "untrusted"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a"
+
[[package]]
name = "url"
version = "2.3.1"
@@ -2547,7 +3048,7 @@ dependencies = [
"multipart",
"percent-encoding",
"pin-project",
- "rustls-pemfile",
+ "rustls-pemfile 0.2.1",
"scoped-tls",
"serde",
"serde_json",
@@ -2599,7 +3100,7 @@ dependencies = [
"once_cell",
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
"wasm-bindgen-shared",
]
@@ -2621,7 +3122,7 @@ checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
@@ -2632,6 +3133,26 @@ version = "0.2.83"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f"
+[[package]]
+name = "web-sys"
+version = "0.3.60"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "webpki"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd"
+dependencies = [
+ "ring",
+ "untrusted",
+]
+
[[package]]
name = "winapi"
version = "0.3.9"
@@ -2669,13 +3190,37 @@ version = "0.42.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"
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",
+ "windows_aarch64_gnullvm 0.42.0",
+ "windows_aarch64_msvc 0.42.0",
+ "windows_i686_gnu 0.42.0",
+ "windows_i686_msvc 0.42.0",
+ "windows_x86_64_gnu 0.42.0",
+ "windows_x86_64_gnullvm 0.42.0",
+ "windows_x86_64_msvc 0.42.0",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+dependencies = [
+ "windows-targets",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.48.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f"
+dependencies = [
+ "windows_aarch64_gnullvm 0.48.0",
+ "windows_aarch64_msvc 0.48.0",
+ "windows_i686_gnu 0.48.0",
+ "windows_i686_msvc 0.48.0",
+ "windows_x86_64_gnu 0.48.0",
+ "windows_x86_64_gnullvm 0.48.0",
+ "windows_x86_64_msvc 0.48.0",
]
[[package]]
@@ -2684,42 +3229,84 @@ version = "0.42.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e"
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"
+
[[package]]
name = "windows_aarch64_msvc"
version = "0.42.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4"
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"
+
[[package]]
name = "windows_i686_gnu"
version = "0.42.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7"
+[[package]]
+name = "windows_i686_gnu"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"
+
[[package]]
name = "windows_i686_msvc"
version = "0.42.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246"
+[[package]]
+name = "windows_i686_msvc"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"
+
[[package]]
name = "windows_x86_64_gnu"
version = "0.42.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed"
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1"
+
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.42.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028"
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"
+
[[package]]
name = "windows_x86_64_msvc"
version = "0.42.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5"
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
+
[[package]]
name = "zeroize"
version = "1.3.0"
@@ -2737,6 +3324,6 @@ checksum = "3f8f187641dad4f680d25c4bfc4225b418165984179f26ca76ec4fb6441d3a17"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.104",
"synstructure",
]
diff --git a/sponsoredTransactions/backend/Cargo.toml b/sponsoredTransactions/backend/Cargo.toml
index a69ab46d..4901c12a 100644
--- a/sponsoredTransactions/backend/Cargo.toml
+++ b/sponsoredTransactions/backend/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "sponsored-transaction-backend"
-version = "1.0.0"
+version = "2.0.0"
authors = ["Concordium AG "]
edition = "2021"
license-file = "../../LICENSE"
@@ -9,6 +9,7 @@ license-file = "../../LICENSE"
[dependencies]
tokio = { version = "1", features = ["full"] }
+tonic = {version = "0.8", features = ["tls", "tls-roots"]} # Use system trust roots.
warp = "0.3"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
diff --git a/sponsoredTransactions/backend/README.md b/sponsoredTransactions/backend/README.md
index 4901c31d..5a40bca7 100644
--- a/sponsoredTransactions/backend/README.md
+++ b/sponsoredTransactions/backend/README.md
@@ -31,7 +31,7 @@ To get your account file (the `3PXwJYYPf6fyVb4GJquxSZU8puxrHfzc4XogdMVot8MUQK53t
-Note: Use the same smart contract index for the frontend and backend. In other words, use the SPONSORED_TX_CONTRACT_INDEX from the `../frontend/src/constants.ts` file when starting the backend server.
+Note: Use the same smart contract index for the frontend and backend. In other words, use the SMART_CONTRACT_INDEX from the `../frontend/package.json` file when starting the backend server.
# Using the tool
@@ -39,10 +39,10 @@ The backend is a simple server that exposes two endpoints
- `POST /submitUpdateOperator`
- `POST /submitTransfer`
-The overall flow is that the user signs a sponsored updateOperator/transfer message in the browser wallet (or mobile wallet via walletConnect) and sends the signature together with some input parameters to this backend server via one of the above endpoints. The backend creates a sponsored transaction and submits it to the `permit` function in the smart contract {index: SPONSORED_TX_CONTRACT_INDEX, subindex: 0}. You can look up the SPONSORED_TX_CONTRACT_INDEX in the `../frontend/src/constants.ts` file. The backend returns the transaction hash to the frontend. This backend server has to have access to a blockchain node and an account (with its associated private key) that is funded with some CCD to submit the sponsored transaction to the chain. The backend wallet will pay for the transaction fees.
+The overall flow is that the user signs a sponsored updateOperator/transfer message in the browser wallet (or mobile wallet via walletConnect) and sends the signature together with some input parameters to this backend server via one of the above endpoints. The backend creates a sponsored transaction and submits it to the `permit` function in the smart contract {index: SMART_CONTRACT_INDEX, subindex: 0}. You can look up the SMART_CONTRACT_INDEX in the `../frontend/package.json` file. The backend returns the transaction hash to the frontend. This backend server has to have access to a blockchain node and an account (with its associated private key) that is funded with some CCD to submit the sponsored transaction to the chain. The backend wallet will pay for the transaction fees.
Note:
-The smart contract {index: SPONSORED_TX_CONTRACT_INDEX, subindex: 0} can be found [here](https://github.com/Concordium/concordium-rust-smart-contracts/tree/main/examples/cis3-nft-sponsored-txs).
+The smart contract code {index: SMART_CONTRACT_INDEX, subindex: 0} can be found [here](https://github.com/Concordium/concordium-rust-smart-contracts/tree/main/examples/cis3-nft-sponsored-txs).
See [src/main.rs](./src/main.rs) for the formats of requests and responses. Both
requests and responses are JSON encoded. The requests are handled by handlers in [src/handlers.rs](./src/handlers.rs).
diff --git a/sponsoredTransactions/backend/src/handlers.rs b/sponsoredTransactions/backend/src/handlers.rs
index 04c2ae79..37c0d5e8 100644
--- a/sponsoredTransactions/backend/src/handlers.rs
+++ b/sponsoredTransactions/backend/src/handlers.rs
@@ -1,11 +1,11 @@
use crate::crypto_common::types::TransactionTime;
-use crate::types;
use crate::types::*;
use concordium_rust_sdk::cis2::{
AdditionalData, OperatorUpdate, Receiver, TokenAmount, Transfer, UpdateOperator,
};
use concordium_rust_sdk::smart_contracts::common::{
- AccountAddress, Address, Amount, ContractAddress, OwnedEntrypointName,
+ AccountAddress, AccountSignatures, Address, Amount, ContractAddress, CredentialSignatures,
+ OwnedEntrypointName, Signature, SignatureEd25519,
};
use concordium_rust_sdk::types::smart_contracts::{ContractContext, InvokeContractResult};
use concordium_rust_sdk::types::{smart_contracts, transactions, Energy, WalletAccount};
@@ -124,17 +124,24 @@ pub async fn submit_transaction(
hex::decode_to_slice(request_signature, &mut signature)
.map_err(|_| LogError::SignatureError)?;
- let mut inner_signature_map: BTreeMap = BTreeMap::new();
- inner_signature_map.insert(0, types::SignatureEd25519(signature));
+ let mut inner_signature_map = BTreeMap::new();
+ inner_signature_map.insert(0, Signature::Ed25519(SignatureEd25519(signature)));
- let mut signature_map: BTreeMap> = BTreeMap::new();
- signature_map.insert(0, inner_signature_map);
+ let mut signature_map = BTreeMap::new();
+ signature_map.insert(
+ 0,
+ CredentialSignatures {
+ sigs: inner_signature_map,
+ },
+ );
log::debug!("Create Parameter.");
let param: PermitParam = PermitParam {
message,
- signature: signature_map,
+ signature: AccountSignatures {
+ sigs: signature_map,
+ },
signer,
};
diff --git a/sponsoredTransactions/backend/src/main.rs b/sponsoredTransactions/backend/src/main.rs
index ba840d7e..f50acc86 100644
--- a/sponsoredTransactions/backend/src/main.rs
+++ b/sponsoredTransactions/backend/src/main.rs
@@ -10,6 +10,8 @@ use std::collections::HashMap;
use std::path::PathBuf;
use std::sync::Arc;
use tokio::sync::Mutex;
+use tonic::transport::ClientTlsConfig;
+use warp::http;
use warp::Filter;
/// Structure used to receive the correct command line arguments.
@@ -59,7 +61,18 @@ async fn main() -> anyhow::Result<()> {
log_builder.filter_level(app.log_level); // filter filter_module(module_path!(), app.log_level);
log_builder.init();
- let mut client_update_operator = concordium_rust_sdk::v2::Client::new(app.endpoint).await?;
+ let endpoint = if app
+ .endpoint
+ .uri()
+ .scheme()
+ .map_or(false, |x| x == &http::uri::Scheme::HTTPS)
+ {
+ app.endpoint.tls_config(ClientTlsConfig::new())?
+ } else {
+ app.endpoint
+ };
+
+ let mut client_update_operator = concordium_rust_sdk::v2::Client::new(endpoint).await?;
let client_transfer = client_update_operator.clone();
diff --git a/sponsoredTransactions/backend/src/types.rs b/sponsoredTransactions/backend/src/types.rs
index 013f0656..a44ea448 100644
--- a/sponsoredTransactions/backend/src/types.rs
+++ b/sponsoredTransactions/backend/src/types.rs
@@ -1,16 +1,16 @@
use concordium_rust_sdk::cis2::{TokenId, Transfer, UpdateOperator};
+use concordium_rust_sdk::smart_contracts::common as concordium_std;
use concordium_rust_sdk::types::RejectReason;
use concordium_rust_sdk::{
endpoints::{QueryError, RPCError},
smart_contracts::common::{
- AccountAddress, ContractAddress, OwnedEntrypointName, Serial, Serialize, Timestamp,
+ AccountAddress, AccountSignatures, ContractAddress, OwnedEntrypointName, Serial, Timestamp,
},
types::{
hashes::{HashBytes, TransactionMarker},
Nonce,
},
};
-use std::collections::BTreeMap;
use std::collections::HashMap;
use std::fmt;
use std::sync::Arc;
@@ -90,20 +90,15 @@ pub struct TransferInputParams {
pub timestamp: Timestamp,
}
-#[derive(Copy, Clone, Eq, PartialEq, Serialize, Ord, PartialOrd, Hash, Debug)]
-#[repr(transparent)]
-pub struct SignatureEd25519(pub [u8; 64]);
-
#[derive(Debug, Serial, Clone)]
pub struct TransferParams(#[concordium(size_length = 2)] pub Vec);
#[derive(Debug, Serial, Clone)]
pub struct UpdateOperatorParams(#[concordium(size_length = 2)] pub Vec);
-#[derive(Debug, Serial, Clone)]
+#[derive(Debug, Serial)]
pub struct PermitParam {
- #[concordium(size_length = 1)]
- pub signature: BTreeMap>,
+ pub signature: AccountSignatures,
pub signer: AccountAddress,
pub message: PermitMessage,
}
diff --git a/sponsoredTransactions/frontend/.eslintrc.js b/sponsoredTransactions/frontend/.eslintrc.js
new file mode 100644
index 00000000..0da2dbe4
--- /dev/null
+++ b/sponsoredTransactions/frontend/.eslintrc.js
@@ -0,0 +1,57 @@
+module.exports = {
+ parser: '@typescript-eslint/parser',
+ extends: ['airbnb', 'airbnb-typescript', 'plugin:prettier/recommended', 'plugin:@typescript-eslint/recommended'],
+ parserOptions: {
+ ecmaVersion: 2020,
+ sourceType: 'module',
+ ecmaFeatures: {
+ jsx: true,
+ },
+ project: 'tsconfig.json',
+ createDefaultProgram: true,
+ },
+ env: {
+ browser: true,
+ jest: true,
+ node: true,
+ },
+ rules: {
+ 'import/prefer-default-export': 0,
+ 'no-restricted-exports': 0,
+ 'no-restricted-syntax': ['error', 'ForInStatement', 'LabeledStatement', 'WithStatement'],
+ 'react/jsx-props-no-spreading': 0,
+ 'react/require-default-props': 0,
+ 'class-methods-use-this': 0,
+ 'jsx-a11y/no-autofocus': 0,
+ 'no-await-in-loop': 0,
+ 'import/no-extraneous-dependencies': [
+ 'error',
+ {
+ devDependencies: [
+ '**/*.stories.tsx',
+ '**/build/**/*',
+ '**/*.config.js',
+ '**/*.config.ts',
+ '**/test/**/*',
+ ],
+ },
+ ],
+ 'jsx-a11y/label-has-associated-control': [
+ 'error',
+ {
+ required: {
+ some: ['nesting', 'id'],
+ },
+ },
+ ],
+ 'prettier/prettier': [
+ 'error',
+ {
+ trailingComma: 'es5',
+ singleQuote: true,
+ printWidth: 120,
+ tabWidth: 4,
+ },
+ ],
+ },
+};
diff --git a/sponsoredTransactions/frontend/CHANGELOG.md b/sponsoredTransactions/frontend/CHANGELOG.md
new file mode 100644
index 00000000..4cd0a1b5
--- /dev/null
+++ b/sponsoredTransactions/frontend/CHANGELOG.md
@@ -0,0 +1,17 @@
+## Unreleased changes
+
+## 2.0.1
+
+- Migrate dApp from using deprecated JSON-RPC client to new gRPC client.
+
+## 2.0.0
+
+- Remove tab to register public key
+
+## 1.1.0
+
+- Update link to sponsored transaction tutorial
+
+## 1.0.0
+
+- Initial sponsored transaction front end
diff --git a/sponsoredTransactions/frontend/README.md b/sponsoredTransactions/frontend/README.md
index 30731a35..57734455 100644
--- a/sponsoredTransactions/frontend/README.md
+++ b/sponsoredTransactions/frontend/README.md
@@ -1,17 +1,16 @@
# Sponsored Transactions Web Application
-The example project included in this repository serves as a working example of how to integrate sponsored transactions with smart contracts on the Concordium blockchain. This web app supports the following flows with the browser wallet (or wallet connect):
+The example project included in this repository serves as a working example of how to integrate sponsored transactions with smart contracts on the Concordium blockchain. This web app supports the following flows with the browser wallet:
-- Register a public key (associated with the account from your wallet) in the smart contract.
- Compute the message of a sponsored updateOperator transaction => Sign it with the wallet => Submit the signature and some input parameters to the `/submitUpdateOperator` backend endpoint.
- Mint an NFT to your wallet => Compute the message of a sponsored transfer transaction => Sign it with the wallet => Submit the signature and some input parameters to the `/submitTransfer` backend endpoint.
-The backend creates a sponsored transaction and submits it to the `permit` function in the smart contract {index: SPONSORED_TX_CONTRACT_INDEX, subindex: 0}. You can look up the SPONSORED_TX_CONTRACT_INDEX in the `./src/constants.ts` file. The backend returns the transaction hash to the frontend.
+The backend creates a sponsored transaction and submits it to the `permit` function in the smart contract {index: SMART_CONTRACT_INDEX, subindex: 0}. You can look up the SMART_CONTRACT_INDEX in the `package.json` file. The backend returns the transaction hash to the frontend.
-Note: Use the same smart contract index for the frontend and backend. In other words, use the SPONSORED_TX_CONTRACT_INDEX from the `./src/constants.ts` file (frontend folder) when starting the backend server.
+Note: Use the same smart contract index for the frontend and backend. In other words, use the SMART_CONTRACT_INDEX from the `package.json` file (frontend folder) when starting the backend server.
Note:
-The smart contract {index: SPONSORED_TX_CONTRACT_INDEX, subindex: 0} can be found [here](https://github.com/Concordium/concordium-rust-smart-contracts/tree/main/examples/cis3-nft-sponsored-txs).
+The smart contract code at {index: SMART_CONTRACT_INDEX, subindex: 0} can be found [here](https://github.com/Concordium/concordium-rust-smart-contracts/tree/main/examples/cis3-nft-sponsored-txs).
## Prerequisites
diff --git a/sponsoredTransactions/frontend/esbuild.config.ts b/sponsoredTransactions/frontend/esbuild.config.ts
index c4a373d2..b5b080c9 100644
--- a/sponsoredTransactions/frontend/esbuild.config.ts
+++ b/sponsoredTransactions/frontend/esbuild.config.ts
@@ -5,6 +5,10 @@ import { htmlPlugin } from '@craftamap/esbuild-plugin-html';
import svgrPlugin from 'esbuild-plugin-svgr';
import fs from 'fs';
+if (process.env.SMART_CONTRACT_INDEX === undefined || Number.isNaN(process.env.SMART_CONTRACT_INDEX)) {
+ throw Error('Environmental variable SMART_CONTRACT_INDEX needs to be defined and set to a number');
+}
+
const watch = Boolean(process.env.WATCH);
const main = 'src/index.tsx';
@@ -37,6 +41,7 @@ const config: BuildOptions = {
// https://github.com/evanw/esbuild/issues/73#issuecomment-1204706295
define: {
global: 'window',
+ 'process.env.SMART_CONTRACT_INDEX': process.env.SMART_CONTRACT_INDEX,
},
};
diff --git a/sponsoredTransactions/frontend/package.json b/sponsoredTransactions/frontend/package.json
index 1fdfa6ac..8e771d39 100644
--- a/sponsoredTransactions/frontend/package.json
+++ b/sponsoredTransactions/frontend/package.json
@@ -1,14 +1,14 @@
{
"name": "sponsored-transactions",
"packageManager": "yarn@3.2.0",
- "version": "1.0.0",
+ "version": "2.0.1",
"license": "Apache-2.0",
"engines": {
"node": ">=16.x"
},
"dependencies": {
"@concordium/browser-wallet-api-helpers": "2.4.0",
- "@concordium/react-components": "^0.2.1",
+ "@concordium/react-components": "^0.3.0",
"@concordium/web-sdk": "^3.4.0",
"@thi.ng/leb128": "^2.1.18",
"@types/sha256": "^0.2.0",
@@ -26,19 +26,36 @@
"@types/node": "^18.7.23",
"@types/react": "^18.0.9",
"@types/react-dom": "^18.0.5",
+ "@typescript-eslint/eslint-plugin": "^5.20.0",
+ "@typescript-eslint/parser": "^5.20.0",
"cross-env": "^7.0.3",
"esbuild": "^0.14.42",
"esbuild-plugin-svgr": "^1.0.1",
+ "eslint": "7",
+ "eslint-config-airbnb": "^19.0.4",
+ "eslint-config-airbnb-typescript": "^17.0.0",
+ "eslint-config-prettier": "^8.5.0",
+ "eslint-plugin-import": "^2.26.0",
+ "eslint-plugin-jsx-a11y": "^6.5.1",
+ "eslint-plugin-prettier": "^4.0.0",
+ "eslint-plugin-react": "^7.29.4",
+ "eslint-plugin-react-hooks": "^4.4.0",
"fs": "^0.0.1-security",
"live-server": "^1.2.2",
+ "prettier": "^2.6.2",
"process": "^0.11.10",
+ "stylelint": "^14.7.1",
+ "stylelint-config-prettier": "^9.0.3",
+ "stylelint-config-standard-scss": "^3.0.0",
+ "stylelint-prettier": "^2.0.0",
+ "stylelint-scss": "^4.2.0",
"ts-node": "^10.8.0",
"typescript": "^4.7.2"
},
"scripts": {
"lint": "eslint . --cache --max-warnings 0 --ext .ts,.tsx",
"type:check": "yarn run tsc --noEmit",
- "build": "node --loader ts-node/esm ./esbuild.config.ts; cp ./src/assets/* ./dist",
+ "build": "SMART_CONTRACT_INDEX=0 node --loader ts-node/esm ./esbuild.config.ts; cp ./src/assets/* ./dist",
"watch": "cross-env WATCH=1 yarn build",
"start": "live-server ./dist"
}
diff --git a/sponsoredTransactions/frontend/src/Root.tsx b/sponsoredTransactions/frontend/src/Root.tsx
index fe1279cd..283333fb 100644
--- a/sponsoredTransactions/frontend/src/Root.tsx
+++ b/sponsoredTransactions/frontend/src/Root.tsx
@@ -1,8 +1,7 @@
import React from 'react';
-import { WithWalletConnector } from '@concordium/react-components';
+import { WithWalletConnector, TESTNET } from '@concordium/react-components';
import SponsoredTransactions from './SponsoredTransactions';
-import { TESTNET } from './constants';
/**
* Connect to wallet, setup application state context, and render children when the wallet API is ready for use.
@@ -11,7 +10,9 @@ export default function Root() {
return (
- {(props) => }
+
+ {(props) => }
+
);
diff --git a/sponsoredTransactions/frontend/src/SponsoredTransactions.tsx b/sponsoredTransactions/frontend/src/SponsoredTransactions.tsx
index 917ee3eb..42613871 100644
--- a/sponsoredTransactions/frontend/src/SponsoredTransactions.tsx
+++ b/sponsoredTransactions/frontend/src/SponsoredTransactions.tsx
@@ -1,37 +1,42 @@
/* eslint-disable no-console */
/* eslint-disable no-alert */
-
-import React, { useEffect, useState, ChangeEvent } from 'react';
+/* eslint-disable consistent-return */
+import React, { useEffect, useState, ChangeEvent, useCallback } from 'react';
import Switch from 'react-switch';
import {
toBuffer,
- JsonRpcClient,
serializeTypeValue,
- deserializeTypeValue
+ deserializeTypeValue,
+ AccountAddress,
+ ConcordiumGRPCClient,
} from '@concordium/web-sdk';
-import { withJsonRpcClient, WalletConnectionProps, useConnection, useConnect } from '@concordium/react-components';
+import {
+ useGrpcClient,
+ WalletConnectionProps,
+ useConnection,
+ useConnect,
+ typeSchemaFromBase64,
+} from '@concordium/react-components';
import { version } from '../package.json';
-import { submitUpdateOperator, submitTransfer, register, mint } from './utils';
+import { submitUpdateOperator, submitTransfer, mint } from './utils';
import {
+ STAGENET,
SPONSORED_TX_CONTRACT_NAME,
- SPONSORED_TX_CONTRACT_INDEX,
- PUBLIC_KEY_OF_PARAMETER_SCHEMA,
- PUBLIC_KEY_OF_RETURN_VALUE_SCHEMA,
+ NONCE_OF_PARAMETER_SCHEMA,
+ NONCE_OF_RETURN_VALUE_SCHEMA,
SERIALIZATION_HELPER_SCHEMA,
CONTRACT_SUB_INDEX,
BROWSER_WALLET,
WALLET_CONNECT,
UPDATE_OPERATOR_SCHEMA,
TRANSFER_SCHEMA,
- EXPIRY_TIME_SIGNATURE,
REFRESH_INTERVAL,
+ VERIFIER_URL,
} from './constants';
import { WalletConnectionTypeButton } from './WalletConnectorTypeButton';
-const VERIFIER_URL = '/api';
-
const blackCardStyle = {
backgroundColor: 'black',
color: 'white',
@@ -68,32 +73,6 @@ const ButtonStyleDisabled = {
fontSize: '14px',
};
-const ButtonStyleSelected = {
- color: 'white',
- borderRadius: 10,
- margin: '7px 0px 7px 0px',
- padding: '10px',
- width: '100%',
- border: '0px solid',
- backgroundColor: '#174039',
- cursor: 'pointer',
- fontWeight: 300,
- fontSize: '14px',
-};
-
-const ButtonStyleNotSelected = {
- color: 'white',
- borderRadius: 10,
- margin: '7px 0px 7px 0px',
- padding: '10px',
- width: '100%',
- border: '0px solid',
- backgroundColor: '#308274',
- cursor: 'pointer',
- fontWeight: 300,
- fontSize: '14px',
-};
-
const InputFieldStyle = {
backgroundColor: '#181817',
color: 'white',
@@ -104,7 +83,13 @@ const InputFieldStyle = {
padding: '10px 20px',
};
-async function calculateTransferMessage(nonce: string, tokenID: string, from: string, to: string) {
+async function generateTransferMessage(
+ expiryTimeSignature: string,
+ nonce: string,
+ tokenID: string,
+ from: string,
+ to: string
+) {
if (nonce === '') {
alert('Insert a nonce.');
return '';
@@ -126,7 +111,7 @@ async function calculateTransferMessage(nonce: string, tokenID: string, from: st
return '';
}
- if ( from === '') {
+ if (from === '') {
alert('Insert an `from` address.');
return '';
}
@@ -136,7 +121,7 @@ async function calculateTransferMessage(nonce: string, tokenID: string, from: st
return '';
}
- if ( to === '') {
+ if (to === '') {
alert('Insert an `to` address.');
return '';
}
@@ -146,46 +131,44 @@ async function calculateTransferMessage(nonce: string, tokenID: string, from: st
return '';
}
- const transfer =
- [
- {
- amount: '1',
- data: '',
- from: {
- Account: [from],
- },
- to: {
- Account: [to],
- },
- token_id: tokenID,
+ const transfer = [
+ {
+ amount: '1',
+ data: [],
+ from: {
+ Account: [from],
+ },
+ to: {
+ Account: [to],
},
- ]
+ token_id: tokenID,
+ },
+ ];
- const payload = serializeTypeValue(
- transfer,
- toBuffer(TRANSFER_SCHEMA, 'base64')
- );
+ const payload = serializeTypeValue(transfer, toBuffer(TRANSFER_SCHEMA, 'base64'));
const message = {
contract_address: {
- index: Number(SPONSORED_TX_CONTRACT_INDEX),
+ index: Number(process.env.SMART_CONTRACT_INDEX),
subindex: 0,
},
nonce: Number(nonce),
- timestamp: EXPIRY_TIME_SIGNATURE,
+ timestamp: expiryTimeSignature,
entry_point: 'transfer',
payload: Array.from(payload),
};
- const serializedMessage = serializeTypeValue(
- message,
- toBuffer(SERIALIZATION_HELPER_SCHEMA, 'base64')
- );
+ const serializedMessage = serializeTypeValue(message, toBuffer(SERIALIZATION_HELPER_SCHEMA, 'base64'));
return serializedMessage;
}
-async function calculateUpdateOperatorMessage(nonce: string, operator: string, addOperator: boolean) {
+async function generateUpdateOperatorMessage(
+ expiryTimeSignature: string,
+ nonce: string,
+ operator: string,
+ addOperator: boolean
+) {
if (nonce === '') {
alert('Insert a nonce.');
return '';
@@ -197,7 +180,7 @@ async function calculateUpdateOperatorMessage(nonce: string, operator: string, a
return '';
}
- if ( operator === '') {
+ if (operator === '') {
alert('Insert an operator address.');
return '';
}
@@ -209,55 +192,46 @@ async function calculateUpdateOperatorMessage(nonce: string, operator: string, a
const operatorAction = addOperator
? {
- Add: [],
- }
+ Add: [],
+ }
: {
- Remove: [],
- };
-
- const updateOperator =
- [
- {
- operator: {
- Account: [operator],
- },
- update: operatorAction,
- }
- ]
+ Remove: [],
+ };
- const payload = serializeTypeValue(
- updateOperator,
- toBuffer(UPDATE_OPERATOR_SCHEMA, 'base64')
- );
+ const updateOperator = [
+ {
+ operator: {
+ Account: [operator],
+ },
+ update: operatorAction,
+ },
+ ];
+
+ const payload = serializeTypeValue(updateOperator, toBuffer(UPDATE_OPERATOR_SCHEMA, 'base64'));
const message = {
contract_address: {
- index: Number(SPONSORED_TX_CONTRACT_INDEX),
+ index: Number(process.env.SMART_CONTRACT_INDEX),
subindex: 0,
},
nonce: Number(nonce),
- timestamp: EXPIRY_TIME_SIGNATURE,
+ timestamp: expiryTimeSignature,
entry_point: 'updateOperator',
payload: Array.from(payload),
};
- const serializedMessage = serializeTypeValue(
- message,
- toBuffer(SERIALIZATION_HELPER_SCHEMA, 'base64')
- );
+ const serializedMessage = serializeTypeValue(message, toBuffer(SERIALIZATION_HELPER_SCHEMA, 'base64'));
return serializedMessage;
}
-async function getPublicKey(rpcClient: JsonRpcClient, account: string) {
- const res = await rpcClient.getAccountInfo(account);
+async function getPublicKey(rpcClient: ConcordiumGRPCClient, account: string) {
+ const res = await rpcClient.getAccountInfo(new AccountAddress(account));
const publicKey = res?.accountCredentials[0].value.contents.credentialPublicKeys.keys[0].verifyKey;
-
return publicKey;
}
-async function viewPublicKey(rpcClient: JsonRpcClient, account: string) {
-
+async function getNonceOf(rpcClient: ConcordiumGRPCClient, account: string) {
const param = serializeTypeValue(
{
queries: [
@@ -266,48 +240,37 @@ async function viewPublicKey(rpcClient: JsonRpcClient, account: string) {
},
],
},
- toBuffer(PUBLIC_KEY_OF_PARAMETER_SCHEMA, 'base64')
+ toBuffer(NONCE_OF_PARAMETER_SCHEMA, 'base64')
);
const res = await rpcClient.invokeContract({
- method: `${SPONSORED_TX_CONTRACT_NAME}.publicKeyOf`,
- contract: { index: SPONSORED_TX_CONTRACT_INDEX, subindex: CONTRACT_SUB_INDEX },
+ method: `${SPONSORED_TX_CONTRACT_NAME}.nonceOf`,
+ contract: { index: BigInt(Number(process.env.SMART_CONTRACT_INDEX)), subindex: CONTRACT_SUB_INDEX },
parameter: param,
});
if (!res || res.tag === 'failure' || !res.returnValue) {
throw new Error(
- `RPC call 'invokeContract' on method '${SPONSORED_TX_CONTRACT_NAME}.publicKeyOf' of contract '${SPONSORED_TX_CONTRACT_INDEX}' failed`
+ `RPC call 'invokeContract' on method '${SPONSORED_TX_CONTRACT_NAME}.nonceOf' of contract SMART_CONTRACT_INDEX failed`
);
}
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
- const returnValues: {
- None: undefined; Some: any[][];
- }[][] | undefined = deserializeTypeValue
- (toBuffer(res.returnValue, 'hex'),
- toBuffer(PUBLIC_KEY_OF_RETURN_VALUE_SCHEMA, 'base64')
- );
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ const returnValues: any[][] = deserializeTypeValue(
+ toBuffer(res.returnValue, 'hex'),
+ toBuffer(NONCE_OF_RETURN_VALUE_SCHEMA, 'base64')
+ );
if (returnValues === undefined) {
throw new Error(
- `Deserializing the returnValue from the '${SPONSORED_TX_CONTRACT_NAME}.publicKeyOf' method of contract '${SPONSORED_TX_CONTRACT_INDEX}' failed`
+ `Deserializing the returnValue from the '${SPONSORED_TX_CONTRACT_NAME}.nonceOf' method of contract SMART_CONTRACT_INDEX failed`
);
+ } else {
+ // Return next nonce of a user
+ return returnValues[0][0];
}
-
- if (returnValues[0][0]?.None !== undefined) {
- // [public key, nonce] of a user that has not registered a public key yet
- return ['', 0];
- }
-
- if (returnValues[0][0]?.Some[0][0] !== undefined) {
- // [public key, nonce] of a user that has registered a public key already
- return [`0x${returnValues[0][0].Some[0][0]}`, returnValues[0][0].Some[0][1]];
- }
-
- throw new Error(
- `Deserializing the returnValue from the '${SPONSORED_TX_CONTRACT_NAME}.publicKeyOf' method of contract '${SPONSORED_TX_CONTRACT_INDEX}' failed`
- );
}
function clearInputFields() {
@@ -348,15 +311,17 @@ export default function SponsoredTransactions(props: WalletConnectionProps) {
const { connection, setConnection, account, genesisHash } = useConnection(connectedAccounts, genesisHashes);
const { connect, isConnecting, connectError } = useConnect(activeConnector, setConnection);
+ const grpcClient = useGrpcClient(STAGENET);
const [publicKeyError, setPublicKeyError] = useState('');
+ const [nextNonceError, setNextNonceError] = useState('');
- const [isPermitUpdateOperator, setPermitUpdateOperator] = useState(true);
+ const [isUpdateOperatorTab, setUpdateOperatorTab] = useState(true);
- const [publicKey, setPublicKey] = useState('');
const [nextNonce, setNextNonce] = useState(0);
-
const [accountInfoPublicKey, setAccountInfoPublicKey] = useState('');
+
+ const [expiryTime, setExpiryTime] = useState('');
const [operator, setOperator] = useState('');
const [addOperator, setAddOperator] = useState(true);
const [tokenID, setTokenID] = useState('');
@@ -368,96 +333,79 @@ export default function SponsoredTransactions(props: WalletConnectionProps) {
const [signature, setSignature] = useState('');
const [signingError, setSigningError] = useState('');
- const changeOperatorHandler = (event: ChangeEvent) => {
+ const changeOperatorHandler = useCallback((event: ChangeEvent) => {
const target = event.target as HTMLTextAreaElement;
setOperator(target.value);
- };
+ }, []);
- const changeTokenIDHandler = (event: ChangeEvent) => {
+ const changeTokenIDHandler = useCallback((event: ChangeEvent) => {
const target = event.target as HTMLTextAreaElement;
setTokenID(target.value);
- };
+ }, []);
- const changeToHandler = (event: ChangeEvent) => {
+ const changeToHandler = useCallback((event: ChangeEvent) => {
const target = event.target as HTMLTextAreaElement;
setTo(target.value);
- };
+ }, []);
- const changeFromHandler = (event: ChangeEvent) => {
+ const changeFromHandler = useCallback((event: ChangeEvent) => {
const target = event.target as HTMLTextAreaElement;
setFrom(target.value);
- };
+ }, []);
- const changeNonceHandler = (event: ChangeEvent) => {
+ const changeNonceHandler = useCallback((event: ChangeEvent) => {
const target = event.target as HTMLTextAreaElement;
setNonce(target.value);
- };
+ }, []);
- const changeSignerHandler = (event: ChangeEvent) => {
+ const changeSignerHandler = useCallback((event: ChangeEvent) => {
const target = event.target as HTMLTextAreaElement;
setSigner(target.value);
- };
+ }, []);
- // Refresh publicKey/nonce periodically.
- // eslint-disable-next-line consistent-return
useEffect(() => {
-
- if (connection && account) {
+ // Refresh next nonce periodically.
+ if (grpcClient && account) {
const interval = setInterval(() => {
console.log('refreshing');
- withJsonRpcClient(connection, (rpcClient) => viewPublicKey(rpcClient, account))
- .then((record) => {
- if (record !== undefined) {
- setPublicKey(record[0]);
- setNextNonce(record[1]);
- setNonce(record[1]);
- const nonce = document.getElementById('nonce') as HTMLTextAreaElement;
- if (nonce !== null) {
- nonce.value = record[1];
- }
+
+ getNonceOf(grpcClient, account)
+ .then((nonceValue) => {
+ if (nonceValue !== undefined) {
+ setNextNonce(nonceValue);
}
- setPublicKeyError('');
+ setNextNonceError('');
})
.catch((e) => {
- setPublicKeyError((e as Error).message);
- setPublicKey('');
+ setNextNonceError((e as Error).message);
setNextNonce(0);
- setNonce('');
});
}, REFRESH_INTERVAL.asMilliseconds());
return () => clearInterval(interval);
}
- }, [connection, account, viewPublicKey]);
+ }, [grpcClient, account]);
useEffect(() => {
- // View publicKey record from smart contract.
- if (connection && account) {
- withJsonRpcClient(connection, (rpcClient) => viewPublicKey(rpcClient, account))
- .then((record) => {
- if (record !== undefined) {
- setPublicKey(record[0]);
- setNextNonce(record[1]);
- setNonce(record[1]);
- const nonce = document.getElementById('nonce') as HTMLTextAreaElement;
- if (nonce !== null) {
- nonce.value = record[1];
- }
+ // Get next nonce record from smart contract.
+ if (grpcClient && account) {
+ getNonceOf(grpcClient, account)
+ .then((nonceValue) => {
+ if (nonceValue !== undefined) {
+ setNextNonce(nonceValue);
}
- setPublicKeyError('');
+ setNextNonceError('');
})
.catch((e) => {
- setPublicKeyError((e as Error).message);
- setPublicKey('');
+ setNextNonceError((e as Error).message);
setNextNonce(0);
- setNonce('');
});
}
- }, [connection, account]);
+ }, [grpcClient, account]);
useEffect(() => {
// Get publicKey record from chain.
- if (connection && account) {
- withJsonRpcClient(connection, (rpcClient) => getPublicKey(rpcClient, account))
+ if (grpcClient && account) {
+ getPublicKey(grpcClient, account)
.then((publicKey) => {
if (publicKey !== undefined) {
setAccountInfoPublicKey(publicKey);
@@ -469,9 +417,8 @@ export default function SponsoredTransactions(props: WalletConnectionProps) {
setAccountInfoPublicKey('');
});
}
- }, [connection, account]);
+ }, [grpcClient, account]);
- const [isRegisterPublicKeyPage, setIsRegisterPublicKeyPage] = useState(true);
const [txHash, setTxHash] = useState('');
const [transactionError, setTransactionError] = useState('');
@@ -536,71 +483,13 @@ export default function SponsoredTransactions(props: WalletConnectionProps) {
-
-
- {
- setIsRegisterPublicKeyPage(!isRegisterPublicKeyPage);
- setSignature('');
- setSigningError('');
- setTokenID('');
- setFrom('');
- setTo('');
- setOperator('');
- setNonce('');
- setSigner('');
- setTransactionError('');
- setTxHash('');
- clearInputFields();
- }}
- onColor="#308274"
- offColor="#308274"
- onHandleColor="#174039"
- offHandleColor="#174039"
- checked={!isRegisterPublicKeyPage}
- checkedIcon={false}
- uncheckedIcon={false}
- />
-
-
+ Your public key is:
+ {accountInfoPublicKey}
+ {publicKeyError && Error: {publicKeyError}.
}
+
+ Your next nonce is:
+ {nextNonce}
+ {nextNonceError && Error: {nextNonceError}.
}
>
)}
{genesisHash && genesisHash !== network.genesisHash && (
@@ -610,45 +499,13 @@ export default function SponsoredTransactions(props: WalletConnectionProps) {
)}
- {connection && isRegisterPublicKeyPage && account !== undefined && (
- <>
- {!publicKey && (
- <>
-
- >
- )}
-
- {publicKey !== '' && (
- <>
- Your registered public key is:
- {publicKey}
- Your next nonce is:
- {nextNonce}
- >
- )}
- >
- )}
- {connection && !isRegisterPublicKeyPage && account !== undefined && (
+ {connection && account !== undefined && (
<>
Update operator via a sponsored transaction
{
- setPermitUpdateOperator(!isPermitUpdateOperator);
+ setUpdateOperatorTab(!isUpdateOperatorTab);
setSignature('');
setSigningError('');
setTxHash('');
@@ -665,14 +522,13 @@ export default function SponsoredTransactions(props: WalletConnectionProps) {
offColor="#308274"
onHandleColor="#174039"
offHandleColor="#174039"
- checked={!isPermitUpdateOperator}
+ checked={!isUpdateOperatorTab}
checkedIcon={false}
uncheckedIcon={false}
/>
Transfer via a sponsored transaction
- {publicKey === '' && Register a public key first.
}
- {isPermitUpdateOperator && publicKey !== '' && (
+ {isUpdateOperatorTab && (
<>