Fix build caching and initial devnet setup steps

Change-Id: I6df841c90f93585f0146b0de65883dd101e45bc9
This commit is contained in:
Hendrik Hofstadt 2021-06-23 15:38:59 +02:00
parent 89ddc95a78
commit d677311d70
5 changed files with 213 additions and 62 deletions

5
.dockerignore Normal file
View File

@ -0,0 +1,5 @@
target
bin
solana/bridge/target
solana/solitaire/target
solana/modules/token_bridge/target

View File

@ -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

View File

@ -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 <<EOF > 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

View File

@ -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"

184
tools/package-lock.json generated
View File

@ -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",