From d677311d707efcaaba716b4cfa0ecf120be49bf5 Mon Sep 17 00:00:00 2001 From: Hendrik Hofstadt Date: Wed, 23 Jun 2021 15:38:59 +0200 Subject: [PATCH] Fix build caching and initial devnet setup steps Change-Id: I6df841c90f93585f0146b0de65883dd101e45bc9 --- .dockerignore | 5 + Dockerfile.agent | 6 ++ solana/devnet_setup.sh | 33 ++++--- solana/solitaire/Cargo.lock | 47 --------- tools/package-lock.json | 184 +++++++++++++++++++++++++++++++++++- 5 files changed, 213 insertions(+), 62 deletions(-) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..2099d0bae --- /dev/null +++ b/.dockerignore @@ -0,0 +1,5 @@ +target +bin +solana/bridge/target +solana/solitaire/target +solana/modules/token_bridge/target \ No newline at end of file diff --git a/Dockerfile.agent b/Dockerfile.agent index 9f8602adf..84d54caa8 100644 --- a/Dockerfile.agent +++ b/Dockerfile.agent @@ -11,6 +11,12 @@ ADD solana /usr/src/solana ADD proto /usr/src/proto RUN --mount=type=cache,target=/usr/local/cargo,from=rust,source=/usr/local/cargo \ + --mount=type=cache,target=/root/.cache \ --mount=type=cache,target=target \ + --mount=type=cache,target=bridge/target \ + cargo install --version =1.7.0 solana-cli && \ + cargo install --version =2.0.12 spl-token-cli && \ cargo build --manifest-path ./bridge/Cargo.toml --package client --release && \ + cp /usr/local/cargo/bin/solana /usr/local/bin && \ + cp /usr/local/cargo/bin/spl-token /usr/local/bin && \ cp bridge/target/release/client /usr/local/bin diff --git a/solana/devnet_setup.sh b/solana/devnet_setup.sh index aa595c951..9356bf6eb 100755 --- a/solana/devnet_setup.sh +++ b/solana/devnet_setup.sh @@ -10,6 +10,11 @@ websocket_url: "" keypair_path: /usr/src/solana/id.json EOF +# Static key for the mint so it always has the same address +cat < token.json +[179,228,102,38,68,102,75,133,127,56,63,167,143,42,59,29,220,215,100,149,220,241,176,204,154,241,168,147,195,139,55,100,22,88,9,115,146,64,160,172,3,185,132,64,254,137,133,84,142,58,166,131,205,13,77,157,245,181,101,150,105,250,163,1] +EOF + # Constants cli_address=6sbzC1eH4FTujJXWj51eQe25cYvr4xfXbJ1vAj7j2k5J bridge_address=Bridge1p5gheXUvJ6jGWGeCsgPKgnE3YgdGKRVCMY9o @@ -24,35 +29,35 @@ retry () { } # Fund our account (as seen in id.json). -retry cli airdrop 127.0.0.1:9900 +retry solana airdrop 1000 --faucet-port 9900 --faucet-host 127.0.0.1 + +# Create a new SPL token +token=$(spl-token create-token -- token.json | grep 'Creating token' | awk '{ print $3 }') +echo "Created token $token" + +# Create token account +account=$(spl-token create-account "$token" | grep 'Creating account' | awk '{ print $3 }') +echo "Created token account $account" + +# Mint new tokens owned by our CLI account +spl-token mint "$token" 10000000000 "$account" # Create the bridge contract at a known address # OK to fail on subsequent attempts (already created). retry cli create-bridge "$bridge_address" "$initial_guardian" -# Create a new SPL token (at a random address) -token=$(cli create-token --seed=29934 | grep 'Creating token' | awk '{ print $3 }') -echo "Created token $token" - -# Create token account -account=$(cli create-account --seed=38489 "$token" | grep 'Creating account' | awk '{ print $3 }') -echo "Created token account $account" - -# Mint new tokens owned by our CLI account -cli mint "$token" 10000000000 "$account" - # Create wrapped asset for the token we mint in send-lockups.js (2 = Ethereum, 9 decimals) wrapped_token=$(cli create-wrapped "$bridge_address" 2 9 000000000000000000000000CfEB869F69431e42cdB54A4F4f105C19C080A601 | grep 'Wrapped Mint address' | awk '{ print $4 }') echo "Created wrapped token $wrapped_token" # Create token account to receive wrapped assets from send-lockups.js -wrapped_account=$(cli create-account --seed=934893 "$wrapped_token" | grep 'Creating account' | awk '{ print $3 }') +wrapped_account=$(spl-token create-account "$wrapped_token" | grep 'Creating account' | awk '{ print $3 }') echo "Created wrapped token account $wrapped_account" # Create wrapped asset and token account for Terra tokens (3 for Terra, 8 for precision) wrapped_terra_token=$(cli create-wrapped "$bridge_address" 3 8 0000000000000000000000003b1a7485c6162c5883ee45fb2d7477a87d8a4ce5 | grep 'Wrapped Mint address' | awk '{ print $4 }') echo "Created wrapped token for Terra $wrapped_terra_token" -wrapped_terra_account=$(cli create-account --seed=736251 "$wrapped_terra_token" | grep 'Creating account' | awk '{ print $3 }') +wrapped_terra_account=$(cli create-account "$wrapped_terra_token" | grep 'Creating account' | awk '{ print $3 }') echo "Created wrapped token account for Terra $wrapped_terra_account" # Let k8s startup probe succeed diff --git a/solana/solitaire/Cargo.lock b/solana/solitaire/Cargo.lock index 34b19820f..193ba9028 100644 --- a/solana/solitaire/Cargo.lock +++ b/solana/solitaire/Cargo.lock @@ -32,38 +32,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "anchor-bridge-client" -version = "0.1.0" -dependencies = [ - "anyhow", - "borsh", - "bridge", - "clap 3.0.0-beta.2", - "rand 0.7.3", - "shellexpand", - "solana-client", - "solana-program", - "solana-sdk", - "solitaire", - "solitaire-client", -] - -[[package]] -name = "ansi_term" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" -dependencies = [ - "winapi 0.3.9", -] - -[[package]] -name = "anyhow" -version = "1.0.41" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15af2628f6890fe2609a3b91bef4c83450512802e59489f9c1cb1fa5df064a61" - [[package]] name = "arrayref" version = "0.3.6" @@ -233,21 +201,6 @@ dependencies = [ "syn 1.0.73", ] -[[package]] -name = "bridge" -version = "0.1.0" -dependencies = [ - "borsh", - "byteorder", - "primitive-types", - "sha3", - "solana-client", - "solana-program", - "solana-sdk", - "solitaire", - "solitaire-client", -] - [[package]] name = "bs58" version = "0.3.1" diff --git a/tools/package-lock.json b/tools/package-lock.json index a78f5cf85..21fad12ca 100644 --- a/tools/package-lock.json +++ b/tools/package-lock.json @@ -1,8 +1,190 @@ { "name": "tools", "version": "1.0.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "version": "1.0.0", + "devDependencies": { + "ts-proto": "^1.81.1" + } + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://npm/@protobufjs%2faspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=", + "dev": true + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://npm/@protobufjs%2fbase64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "dev": true + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://npm/@protobufjs%2fcodegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "dev": true + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://npm/@protobufjs%2feventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=", + "dev": true + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://npm/@protobufjs%2ffetch/-/fetch-1.1.0.tgz", + "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", + "dev": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://npm/@protobufjs%2ffloat/-/float-1.0.2.tgz", + "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=", + "dev": true + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://npm/@protobufjs%2finquire/-/inquire-1.1.0.tgz", + "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=", + "dev": true + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://npm/@protobufjs%2fpath/-/path-1.1.2.tgz", + "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=", + "dev": true + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://npm/@protobufjs%2fpool/-/pool-1.1.0.tgz", + "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=", + "dev": true + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://npm/@protobufjs%2futf8/-/utf8-1.1.0.tgz", + "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=", + "dev": true + }, + "node_modules/@types/long": { + "version": "4.0.1", + "resolved": "https://npm/@types%2flong/-/long-4.0.1.tgz", + "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==", + "dev": true + }, + "node_modules/@types/node": { + "version": "15.6.1", + "resolved": "https://npm/@types%2fnode/-/node-15.6.1.tgz", + "integrity": "sha512-7EIraBEyRHEe7CH+Fm1XvgqU6uwZN8Q7jppJGcqjROMT29qhAuuOxYB1uEY5UMYQKEmA5D+5tBnhdaPXSsLONA==", + "dev": true + }, + "node_modules/@types/object-hash": { + "version": "1.3.4", + "resolved": "https://npm/@types%2fobject-hash/-/object-hash-1.3.4.tgz", + "integrity": "sha512-xFdpkAkikBgqBdG9vIlsqffDV8GpvnPEzs0IUtr1v3BEB97ijsFQ4RXVbUZwjFThhB4MDSTUfvmxUD5PGx0wXA==", + "dev": true + }, + "node_modules/@types/prettier": { + "version": "1.19.1", + "resolved": "https://npm/@types%2fprettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ==", + "dev": true + }, + "node_modules/dataloader": { + "version": "1.4.0", + "resolved": "https://npm/dataloader/-/dataloader-1.4.0.tgz", + "integrity": "sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==", + "dev": true + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://npm/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/long": { + "version": "4.0.0", + "resolved": "https://npm/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "dev": true + }, + "node_modules/object-hash": { + "version": "1.3.1", + "resolved": "https://npm/object-hash/-/object-hash-1.3.1.tgz", + "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", + "dev": true + }, + "node_modules/prettier": { + "version": "2.3.0", + "resolved": "https://npm/prettier/-/prettier-2.3.0.tgz", + "integrity": "sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w==", + "dev": true + }, + "node_modules/protobufjs": { + "version": "6.11.2", + "resolved": "https://npm/protobufjs/-/protobufjs-6.11.2.tgz", + "integrity": "sha512-4BQJoPooKJl2G9j3XftkIXjoC9C0Av2NOrWmbLWT1vH32GcSUHjM0Arra6UfTsVyfMAuFzaLucXn1sadxJydAw==", + "dev": true, + "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/long": "^4.0.1", + "@types/node": ">=13.7.0", + "long": "^4.0.0" + } + }, + "node_modules/ts-poet": { + "version": "4.5.0", + "resolved": "https://npm/ts-poet/-/ts-poet-4.5.0.tgz", + "integrity": "sha512-Vs2Zsiz3zf5qdFulFTIEpaLdgWeHXKh+4pv+ycVqEh+ZuUOVGrN0i9lbxVx7DB1FBogExytz3OuaBMJfWffpSQ==", + "dev": true, + "dependencies": { + "@types/prettier": "^1.19.0", + "lodash": "^4.17.15", + "prettier": "^2.0.2" + } + }, + "node_modules/ts-proto": { + "version": "1.81.1", + "resolved": "https://npm/ts-proto/-/ts-proto-1.81.1.tgz", + "integrity": "sha512-yp9ADpwZHWoraUF92vaX5pQPz5N0byOc7FO7kNMnIskkyDFhRwLKIYdj8souqRh3BSaXFeMo04804BDaBq8kGw==", + "dev": true, + "dependencies": { + "@types/object-hash": "^1.3.0", + "dataloader": "^1.4.0", + "object-hash": "^1.3.1", + "protobufjs": "^6.8.8", + "ts-poet": "^4.5.0", + "ts-proto-descriptors": "^1.2.1" + } + }, + "node_modules/ts-proto-descriptors": { + "version": "1.2.1", + "resolved": "https://npm/ts-proto-descriptors/-/ts-proto-descriptors-1.2.1.tgz", + "integrity": "sha512-iSHiQAaovi9sBwjiSCca/E089uv0IMt9Cfe0wV5AJwZppGa47yfih97Q+1006bdSLWkxf5Pk3VDQnt1yRTMV8w==", + "dev": true, + "dependencies": { + "long": "^4.0.0", + "protobufjs": "^6.8.8" + } + } + }, "dependencies": { "@protobufjs/aspromise": { "version": "1.1.2",