[cosmwasm] instantiate contracts on multiple chains (#799)

* instantiate contracts on multiple chains

* deploy to neurtron

* function not being used anymore

* rename file dir

* better logs

* wormhole guardian upgrade

* set default wormhole contract

* add all to stages to one file

* add extended chain config

* bug fix

* juno deployment

* removed unused parameter

* resolve bug add comments

* typo

* rename to vaa mainnet

* comment

* remove T

* hardcode checksum

* update download method comment

* update package-lock

* update package-json
This commit is contained in:
Dev Kalra 2023-05-16 13:13:43 +05:30 committed by GitHub
parent 3fc996d6f9
commit 3b03f9eddc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
24 changed files with 1242 additions and 81 deletions

View File

@ -17,6 +17,7 @@ export const RECEIVER_CHAINS = {
sei: 60013,
osmosis: 60014,
neutron: 60015,
juno: 60016,
};
// If there is any overlapping value the receiver chain will replace the wormhole

527
package-lock.json generated
View File

@ -7273,6 +7273,95 @@
"follow-redirects": "^1.14.0"
}
},
"node_modules/@isaacs/cliui": {
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
"integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
"dependencies": {
"string-width": "^5.1.2",
"string-width-cjs": "npm:string-width@^4.2.0",
"strip-ansi": "^7.0.1",
"strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
"wrap-ansi": "^8.1.0",
"wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
},
"engines": {
"node": ">=12"
}
},
"node_modules/@isaacs/cliui/node_modules/ansi-regex": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
"integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/ansi-regex?sponsor=1"
}
},
"node_modules/@isaacs/cliui/node_modules/ansi-styles": {
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
"integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/@isaacs/cliui/node_modules/emoji-regex": {
"version": "9.2.2",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
"integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="
},
"node_modules/@isaacs/cliui/node_modules/string-width": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
"integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
"dependencies": {
"eastasianwidth": "^0.2.0",
"emoji-regex": "^9.2.2",
"strip-ansi": "^7.0.1"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@isaacs/cliui/node_modules/strip-ansi": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
"integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
"dependencies": {
"ansi-regex": "^6.0.1"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
"node_modules/@isaacs/cliui/node_modules/wrap-ansi": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
"integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
"dependencies": {
"ansi-styles": "^6.1.0",
"string-width": "^5.0.1",
"strip-ansi": "^7.0.1"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
"node_modules/@isaacs/string-locale-compare": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz",
@ -11350,6 +11439,15 @@
"typescript": "^3 || ^4"
}
},
"node_modules/@pkgjs/parseargs": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
"integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
"optional": true,
"engines": {
"node": ">=14"
}
},
"node_modules/@project-serum/anchor": {
"version": "0.25.0",
"resolved": "https://registry.npmjs.org/@project-serum/anchor/-/anchor-0.25.0.tgz",
@ -18587,6 +18685,15 @@
"@types/node": "*"
}
},
"node_modules/@types/adm-zip": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/@types/adm-zip/-/adm-zip-0.5.0.tgz",
"integrity": "sha512-FCJBJq9ODsQZUNURo5ILAQueuA8WJhRvuihS3ke2iI25mJlfV2LK8jG2Qj2z2AWg8U0FtWWqBHVRetceLskSaw==",
"dev": true,
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/aria-query": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.1.tgz",
@ -26149,6 +26256,11 @@
"safe-buffer": "~5.1.0"
}
},
"node_modules/eastasianwidth": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
"integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="
},
"node_modules/ecc-jsbn": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
@ -29599,6 +29711,32 @@
"integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==",
"dev": true
},
"node_modules/foreground-child": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
"integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
"dependencies": {
"cross-spawn": "^7.0.0",
"signal-exit": "^4.0.1"
},
"engines": {
"node": ">=14"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/foreground-child/node_modules/signal-exit": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz",
"integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==",
"engines": {
"node": ">=14"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
@ -33364,6 +33502,23 @@
"integrity": "sha512-Cu/kb+4HiNSejAPhSaN1VukdNTTi/r4/e+yykqjlG/IW+1gZH5b4+Bq3whDX4tvbYugta3r8KTMUiqT3fIGxuQ==",
"dev": true
},
"node_modules/jackspeak": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.0.tgz",
"integrity": "sha512-r5XBrqIJfwRIjRt/Xr5fv9Wh09qyhHfKnYddDlpM+ibRR20qrYActpCAgU6U+d53EOEjzkvxPMVHSlgR7leXrQ==",
"dependencies": {
"@isaacs/cliui": "^8.0.2"
},
"engines": {
"node": ">=14"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
},
"optionalDependencies": {
"@pkgjs/parseargs": "^0.11.0"
}
},
"node_modules/jake": {
"version": "10.8.5",
"resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz",
@ -39355,6 +39510,17 @@
"node": ">= 0.10.5"
}
},
"node_modules/node-downloader-helper": {
"version": "2.1.7",
"resolved": "https://registry.npmjs.org/node-downloader-helper/-/node-downloader-helper-2.1.7.tgz",
"integrity": "sha512-3dBuMF/XPy5WFi3XiiXaglafzoycRH5GjmRz1nAt2uI9D+TcBrc+n/AzH8bzLHR85Wsf6vZSZblzw+MiUS/WNQ==",
"bin": {
"ndh": "bin/ndh"
},
"engines": {
"node": ">=14.18"
}
},
"node_modules/node-fetch": {
"version": "2.6.8",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.8.tgz",
@ -41169,6 +41335,37 @@
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
},
"node_modules/path-scurry": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.9.1.tgz",
"integrity": "sha512-UgmoiySyjFxP6tscZDgWGEAgsW5ok8W3F5CJDnnH2pozwSTGE6eH7vwTotMwATWA2r5xqdkKdxYPkwlJjAI/3g==",
"dependencies": {
"lru-cache": "^9.1.1",
"minipass": "^5.0.0 || ^6.0.0"
},
"engines": {
"node": ">=16 || 14 >=14.17"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/path-scurry/node_modules/lru-cache": {
"version": "9.1.1",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.1.tgz",
"integrity": "sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==",
"engines": {
"node": "14 || >=16.14"
}
},
"node_modules/path-scurry/node_modules/minipass": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.0.tgz",
"integrity": "sha512-mvD5U4pUen1aWcjTxUgdoMg6PB98dcV0obc/OiPzls79++IpgNoO+MCbOHRlKfWIOvjIjmjUygjZmSStP7B0Og==",
"engines": {
"node": ">=16 || 14 >=14.17"
}
},
"node_modules/path-to-regexp": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
@ -49639,6 +49836,20 @@
"node": ">=8"
}
},
"node_modules/string-width-cjs": {
"name": "string-width",
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/string.prototype.matchall": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz",
@ -49731,6 +49942,18 @@
"node": ">=8"
}
},
"node_modules/strip-ansi-cjs": {
"name": "strip-ansi",
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dependencies": {
"ansi-regex": "^5.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/strip-bom": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
@ -54607,6 +54830,23 @@
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
"node_modules/wrap-ansi-cjs": {
"name": "wrap-ansi",
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
"strip-ansi": "^6.0.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
"node_modules/wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
@ -56915,14 +57155,18 @@
"@ltd/j-toml": "^1.38.0",
"@pythnetwork/xc-governance-sdk": "*",
"@terra-money/terra.js": "^3.1.3",
"adm-zip": "^0.5.10",
"chain-registry": "^1.6.0",
"cosmjs-utils": "^0.1.0",
"dotenv": "^16.0.0",
"ethers": "^5.4.4",
"node-downloader-helper": "^2.1.7",
"osmojs": "^13.0.0-rc.7-i-alpha",
"rimraf": "^5.0.0",
"yargs": "^17.0.1"
},
"devDependencies": {
"@types/adm-zip": "^0.5.0",
"@types/yargs": "^17.0.18",
"@typescript-eslint/eslint-plugin": "^5.43.0",
"@typescript-eslint/parser": "^5.43.0",
@ -57207,6 +57451,14 @@
"store2": "^2.12.0"
}
},
"target_chains/cosmwasm/tools/node_modules/adm-zip": {
"version": "0.5.10",
"resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz",
"integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==",
"engines": {
"node": ">=6.0"
}
},
"target_chains/cosmwasm/tools/node_modules/axios": {
"version": "0.21.4",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
@ -57215,6 +57467,14 @@
"follow-redirects": "^1.14.0"
}
},
"target_chains/cosmwasm/tools/node_modules/brace-expansion": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"dependencies": {
"balanced-match": "^1.0.0"
}
},
"target_chains/cosmwasm/tools/node_modules/cliui": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
@ -57246,6 +57506,49 @@
"node": ">=12"
}
},
"target_chains/cosmwasm/tools/node_modules/glob": {
"version": "10.2.4",
"resolved": "https://registry.npmjs.org/glob/-/glob-10.2.4.tgz",
"integrity": "sha512-fDboBse/sl1oXSLhIp0FcCJgzW9KmhC/q8ULTKC82zc+DL3TL7FNb8qlt5qqXN53MsKEUSIcb+7DLmEygOE5Yw==",
"dependencies": {
"foreground-child": "^3.1.0",
"jackspeak": "^2.0.3",
"minimatch": "^9.0.0",
"minipass": "^5.0.0 || ^6.0.0",
"path-scurry": "^1.7.0"
},
"bin": {
"glob": "dist/cjs/src/bin.js"
},
"engines": {
"node": ">=16 || 14 >=14.17"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"target_chains/cosmwasm/tools/node_modules/minimatch": {
"version": "9.0.0",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz",
"integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==",
"dependencies": {
"brace-expansion": "^2.0.1"
},
"engines": {
"node": ">=16 || 14 >=14.17"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"target_chains/cosmwasm/tools/node_modules/minipass": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.0.tgz",
"integrity": "sha512-mvD5U4pUen1aWcjTxUgdoMg6PB98dcV0obc/OiPzls79++IpgNoO+MCbOHRlKfWIOvjIjmjUygjZmSStP7B0Og==",
"engines": {
"node": ">=16 || 14 >=14.17"
}
},
"target_chains/cosmwasm/tools/node_modules/protobufjs": {
"version": "6.11.3",
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz",
@ -57271,6 +57574,23 @@
"pbts": "bin/pbts"
}
},
"target_chains/cosmwasm/tools/node_modules/rimraf": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.0.tgz",
"integrity": "sha512-Jf9llaP+RvaEVS5nPShYFhtXIrb3LRKP281ib3So0KkeZKo2wIKyq0Re7TOSwanasA423PSr6CCIL4bP6T040g==",
"dependencies": {
"glob": "^10.0.0"
},
"bin": {
"rimraf": "dist/cjs/src/bin.js"
},
"engines": {
"node": ">=14"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"target_chains/cosmwasm/tools/node_modules/yargs": {
"version": "17.7.2",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
@ -62652,6 +62972,64 @@
}
}
},
"@isaacs/cliui": {
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
"integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
"requires": {
"string-width": "^5.1.2",
"string-width-cjs": "npm:string-width@^4.2.0",
"strip-ansi": "^7.0.1",
"strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
"wrap-ansi": "^8.1.0",
"wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
},
"dependencies": {
"ansi-regex": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
"integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA=="
},
"ansi-styles": {
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
"integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="
},
"emoji-regex": {
"version": "9.2.2",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
"integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="
},
"string-width": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
"integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
"requires": {
"eastasianwidth": "^0.2.0",
"emoji-regex": "^9.2.2",
"strip-ansi": "^7.0.1"
}
},
"strip-ansi": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
"integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
"requires": {
"ansi-regex": "^6.0.1"
}
},
"wrap-ansi": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
"integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
"requires": {
"ansi-styles": "^6.1.0",
"string-width": "^5.0.1",
"strip-ansi": "^7.0.1"
}
}
}
},
"@isaacs/string-locale-compare": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz",
@ -65930,6 +66308,12 @@
"esquery": "^1.0.1"
}
},
"@pkgjs/parseargs": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
"integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
"optional": true
},
"@project-serum/anchor": {
"version": "0.25.0",
"resolved": "https://registry.npmjs.org/@project-serum/anchor/-/anchor-0.25.0.tgz",
@ -66065,9 +66449,11 @@
"@ltd/j-toml": "^1.38.0",
"@pythnetwork/xc-governance-sdk": "*",
"@terra-money/terra.js": "^3.1.3",
"@types/adm-zip": "^0.5.0",
"@types/yargs": "^17.0.18",
"@typescript-eslint/eslint-plugin": "^5.43.0",
"@typescript-eslint/parser": "^5.43.0",
"adm-zip": "^0.5.10",
"chain-registry": "^1.6.0",
"cosmjs-types": "^0.6.1",
"cosmjs-utils": "^0.1.0",
@ -66075,7 +66461,9 @@
"eslint": "^8.27.0",
"eslint-config-prettier": "^8.5.0",
"ethers": "^5.4.4",
"node-downloader-helper": "^2.1.7",
"osmojs": "^13.0.0-rc.7-i-alpha",
"rimraf": "^5.0.0",
"ts-node": "^10.9.1",
"typescript": "^4.9.3",
"yargs": "^17.0.1"
@ -66361,6 +66749,11 @@
"store2": "^2.12.0"
}
},
"adm-zip": {
"version": "0.5.10",
"resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz",
"integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ=="
},
"axios": {
"version": "0.21.4",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
@ -66369,6 +66762,14 @@
"follow-redirects": "^1.14.0"
}
},
"brace-expansion": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"requires": {
"balanced-match": "^1.0.0"
}
},
"cliui": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
@ -66394,6 +66795,31 @@
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz",
"integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ=="
},
"glob": {
"version": "10.2.4",
"resolved": "https://registry.npmjs.org/glob/-/glob-10.2.4.tgz",
"integrity": "sha512-fDboBse/sl1oXSLhIp0FcCJgzW9KmhC/q8ULTKC82zc+DL3TL7FNb8qlt5qqXN53MsKEUSIcb+7DLmEygOE5Yw==",
"requires": {
"foreground-child": "^3.1.0",
"jackspeak": "^2.0.3",
"minimatch": "^9.0.0",
"minipass": "^5.0.0 || ^6.0.0",
"path-scurry": "^1.7.0"
}
},
"minimatch": {
"version": "9.0.0",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz",
"integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==",
"requires": {
"brace-expansion": "^2.0.1"
}
},
"minipass": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.0.tgz",
"integrity": "sha512-mvD5U4pUen1aWcjTxUgdoMg6PB98dcV0obc/OiPzls79++IpgNoO+MCbOHRlKfWIOvjIjmjUygjZmSStP7B0Og=="
},
"protobufjs": {
"version": "6.11.3",
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz",
@ -66414,6 +66840,14 @@
"long": "^4.0.0"
}
},
"rimraf": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.0.tgz",
"integrity": "sha512-Jf9llaP+RvaEVS5nPShYFhtXIrb3LRKP281ib3So0KkeZKo2wIKyq0Re7TOSwanasA423PSr6CCIL4bP6T040g==",
"requires": {
"glob": "^10.0.0"
}
},
"yargs": {
"version": "17.7.2",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
@ -75320,6 +75754,15 @@
"@types/node": "*"
}
},
"@types/adm-zip": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/@types/adm-zip/-/adm-zip-0.5.0.tgz",
"integrity": "sha512-FCJBJq9ODsQZUNURo5ILAQueuA8WJhRvuihS3ke2iI25mJlfV2LK8jG2Qj2z2AWg8U0FtWWqBHVRetceLskSaw==",
"dev": true,
"requires": {
"@types/node": "*"
}
},
"@types/aria-query": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.1.tgz",
@ -81551,6 +81994,11 @@
}
}
},
"eastasianwidth": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
"integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="
},
"ecc-jsbn": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
@ -84357,6 +84805,22 @@
"integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==",
"dev": true
},
"foreground-child": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
"integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
"requires": {
"cross-spawn": "^7.0.0",
"signal-exit": "^4.0.1"
},
"dependencies": {
"signal-exit": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz",
"integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q=="
}
}
},
"forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
@ -87117,6 +87581,15 @@
"integrity": "sha512-Cu/kb+4HiNSejAPhSaN1VukdNTTi/r4/e+yykqjlG/IW+1gZH5b4+Bq3whDX4tvbYugta3r8KTMUiqT3fIGxuQ==",
"dev": true
},
"jackspeak": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.0.tgz",
"integrity": "sha512-r5XBrqIJfwRIjRt/Xr5fv9Wh09qyhHfKnYddDlpM+ibRR20qrYActpCAgU6U+d53EOEjzkvxPMVHSlgR7leXrQ==",
"requires": {
"@isaacs/cliui": "^8.0.2",
"@pkgjs/parseargs": "^0.11.0"
}
},
"jake": {
"version": "10.8.5",
"resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz",
@ -91892,6 +92365,11 @@
"minimatch": "^3.0.2"
}
},
"node-downloader-helper": {
"version": "2.1.7",
"resolved": "https://registry.npmjs.org/node-downloader-helper/-/node-downloader-helper-2.1.7.tgz",
"integrity": "sha512-3dBuMF/XPy5WFi3XiiXaglafzoycRH5GjmRz1nAt2uI9D+TcBrc+n/AzH8bzLHR85Wsf6vZSZblzw+MiUS/WNQ=="
},
"node-fetch": {
"version": "2.6.8",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.8.tgz",
@ -93302,6 +93780,27 @@
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
},
"path-scurry": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.9.1.tgz",
"integrity": "sha512-UgmoiySyjFxP6tscZDgWGEAgsW5ok8W3F5CJDnnH2pozwSTGE6eH7vwTotMwATWA2r5xqdkKdxYPkwlJjAI/3g==",
"requires": {
"lru-cache": "^9.1.1",
"minipass": "^5.0.0 || ^6.0.0"
},
"dependencies": {
"lru-cache": {
"version": "9.1.1",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.1.tgz",
"integrity": "sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A=="
},
"minipass": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.0.tgz",
"integrity": "sha512-mvD5U4pUen1aWcjTxUgdoMg6PB98dcV0obc/OiPzls79++IpgNoO+MCbOHRlKfWIOvjIjmjUygjZmSStP7B0Og=="
}
}
},
"path-to-regexp": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
@ -100649,6 +101148,16 @@
"strip-ansi": "^6.0.1"
}
},
"string-width-cjs": {
"version": "npm:string-width@4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"requires": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.1"
}
},
"string.prototype.matchall": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz",
@ -100719,6 +101228,14 @@
"ansi-regex": "^5.0.1"
}
},
"strip-ansi-cjs": {
"version": "npm:strip-ansi@6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"requires": {
"ansi-regex": "^5.0.1"
}
},
"strip-bom": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
@ -104583,6 +105100,16 @@
"strip-ansi": "^6.0.0"
}
},
"wrap-ansi-cjs": {
"version": "npm:wrap-ansi@7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"requires": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
"strip-ansi": "^6.0.0"
}
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",

View File

@ -20,14 +20,18 @@
"@ltd/j-toml": "^1.38.0",
"@pythnetwork/xc-governance-sdk": "*",
"@terra-money/terra.js": "^3.1.3",
"adm-zip": "^0.5.10",
"chain-registry": "^1.6.0",
"cosmjs-utils": "^0.1.0",
"dotenv": "^16.0.0",
"ethers": "^5.4.4",
"node-downloader-helper": "^2.1.7",
"osmojs": "^13.0.0-rc.7-i-alpha",
"rimraf": "^5.0.0",
"yargs": "^17.0.1"
},
"devDependencies": {
"@types/adm-zip": "^0.5.0",
"@types/yargs": "^17.0.18",
"@typescript-eslint/eslint-plugin": "^5.43.0",
"@typescript-eslint/parser": "^5.43.0",

View File

@ -18,6 +18,7 @@ export enum ChainIdTestnet {
OSMOSIS_5 = "osmosis_5",
SEI_ATLANTIC_2 = "sei_atlantic_2",
NEUTRON_PION_1 = "neutron_pion_1",
JUNO = "juno",
}
export const ChainIdsTestnet = Object.values(ChainIdTestnet);
@ -86,7 +87,7 @@ export const ChainsConfigTestnet: Record<ChainIdTestnet, ChainConfig> = {
executorEndpoint: "https://rpc.atlantic-2.seinetwork.io/",
querierEndpoint: "https://rpc.atlantic-2.seinetwork.io/",
prefix: "sei",
gasPrice: "0.1usei",
gasPrice: "0.01usei",
},
[ChainIdTestnet.NEUTRON_PION_1]: {
chainId: ChainIdTestnet.NEUTRON_PION_1,
@ -96,16 +97,23 @@ export const ChainsConfigTestnet: Record<ChainIdTestnet, ChainConfig> = {
prefix: "neutron",
gasPrice: "0.025untrn",
},
[ChainIdTestnet.JUNO]: {
chainId: ChainIdTestnet.JUNO,
chainType: ChainType.COSMWASM,
executorEndpoint: "https://rpc.uni.junonetwork.io/",
querierEndpoint: "https://rpc.uni.junonetwork.io/",
prefix: "juno",
gasPrice: "0.025ujunox",
},
};
/**
* This method will return an executor for that corresponding chainType for given chainId.
* This method will return an executor for given chainConfig.
*/
export function createExecutorForChain(
chainId: ChainIdTestnet,
chainConfig: ChainConfig,
mnemonic: string
): ChainExecutor {
const chainConfig = ChainsConfigTestnet[chainId];
const chainType = chainConfig.chainType;
if (chainType === ChainType.INJECTIVE) {

View File

@ -63,6 +63,7 @@ export class CosmwasmExecutor implements ChainExecutor {
}
);
try {
const txResponse = await cosmwasmClient.signAndBroadcast(
address,
[encodedMsgObject],
@ -80,6 +81,10 @@ export class CosmwasmExecutor implements ChainExecutor {
}
return txResponse;
} catch (e) {
console.log(e);
throw e;
}
}
async storeCode(req: StoreCodeRequest): Promise<StoreCodeResponse> {

View File

@ -31,7 +31,7 @@ const DEFAULT_GAS_PRICE = 500000000;
export class InjectiveExecutor implements ChainExecutor {
private readonly wallet: PrivateKey;
private readonly chainId = "injective-888";
private readonly gasMultiplier = 1.8;
private readonly gasMultiplier = 2;
private readonly gasPrice = DEFAULT_GAS_PRICE;
constructor(

View File

@ -0,0 +1,9 @@
export const CHECKSUM: any = {
"1.2.0": {
osmosis: "9ac1f9a70316c09ff4e1c25e36499a02b9f46ed60486b10164f5bd4b7c0a0cac",
injective:
"4f7508a76317737eba784400ec1feb443dc5cc3ecce62acbcf4e8a9832e36f06",
cosmwasm:
"788ade6d9ccaca40cea29a6a795319548e8b3ab8925dc33eb902ed6ca615557f",
},
};

View File

@ -0,0 +1,54 @@
import { CHAINS } from "@pythnetwork/xc-governance-sdk";
import {
ChainConfig,
ChainIdTestnet,
ChainsConfigTestnet,
} from "./chains-manager/chains";
export type ExtendedChainConfig = ChainConfig & {
feeDenom: string;
pythArtifactZipName: string;
wormholeChainId: number;
};
export const ExtendedChainsConfigTestnet: Record<
ChainIdTestnet,
ExtendedChainConfig
> = {
[ChainIdTestnet.INJECTIVE]: {
feeDenom: "inj",
pythArtifactZipName: "injective",
wormholeChainId: CHAINS.injective,
...ChainsConfigTestnet[ChainIdTestnet.INJECTIVE],
},
[ChainIdTestnet.OSMOSIS_4]: {
feeDenom: "uosmo",
pythArtifactZipName: "osmosis",
wormholeChainId: CHAINS.osmosis,
...ChainsConfigTestnet[ChainIdTestnet.OSMOSIS_4],
},
[ChainIdTestnet.OSMOSIS_5]: {
feeDenom: "uosmo",
pythArtifactZipName: "osmosis",
wormholeChainId: CHAINS.osmosis,
...ChainsConfigTestnet[ChainIdTestnet.OSMOSIS_5],
},
[ChainIdTestnet.SEI_ATLANTIC_2]: {
feeDenom: "usei",
pythArtifactZipName: "cosmwasm",
wormholeChainId: CHAINS.sei,
...ChainsConfigTestnet[ChainIdTestnet.SEI_ATLANTIC_2],
},
[ChainIdTestnet.NEUTRON_PION_1]: {
feeDenom: "untrn",
pythArtifactZipName: "cosmwasm",
wormholeChainId: CHAINS.neutron,
...ChainsConfigTestnet[ChainIdTestnet.NEUTRON_PION_1],
},
[ChainIdTestnet.JUNO]: {
feeDenom: "ujunox",
pythArtifactZipName: "cosmwasm",
wormholeChainId: CHAINS.juno,
...ChainsConfigTestnet[ChainIdTestnet.JUNO],
},
};

View File

@ -0,0 +1,115 @@
import { readFileSync, existsSync, mkdirSync } from "fs";
import { rimrafSync } from "rimraf";
import AdmZip from "adm-zip";
import path from "path";
import { DownloaderHelper } from "node-downloader-helper";
// We have released the compile contacts on github. If a chain needs some specific
// feature in a contract, a version of the contract with that specific features is
// released. For example, "injective.zip" for injective.
// NOTE that the each zip file should contain the compiled code with the same file
// name `pyth_cosmwasm.wasm`
// Given a contract version (eg 1.2.0) and zipFileNames (eg ["injective", "osmosis"])
// this method will return an object with key = zipFileName and value = compiledCode
export async function getContractBytesDict(
artifactZipFileNames: string[],
version: string
) {
const githubArtifactsLink = `https://github.com/pyth-network/pyth-crosschain/releases/download/pyth-cosmwasm-contract-v${version}/`;
const tmpCodeStorageDir = "./tmp";
// clear tmp directory before downloading contracts
rimrafSync(tmpCodeStorageDir);
if (existsSync(tmpCodeStorageDir) === false) {
mkdirSync(tmpCodeStorageDir, { recursive: true });
}
const uniqueArtifactsZipName = Array.from(new Set(artifactZipFileNames));
// download zip files
await Promise.all(
uniqueArtifactsZipName.map(async (artifactZipName) => {
return new Promise<void>((resolve, reject) => {
const dl = new DownloaderHelper(
githubArtifactsLink + artifactZipName + ".zip",
tmpCodeStorageDir
);
dl.on("end", () => {
console.log("Download Completed");
resolve();
});
dl.on("error", (err) => {
console.log("Download Failed", err);
reject(err);
});
dl.start().catch((err) => {
console.error(err);
reject(err);
});
});
})
);
// extract zip files
uniqueArtifactsZipName.map(async (artifactZipName) => {
const zip = new AdmZip(
path.resolve(tmpCodeStorageDir + "/" + artifactZipName + ".zip")
);
zip.extractAllTo(path.resolve(tmpCodeStorageDir));
});
let contractBytesDict: { [fileName: string]: Buffer } = {};
for (let uniqueArtifactZipName of uniqueArtifactsZipName) {
const contractBytes = readFileSync(
tmpCodeStorageDir + "/" + uniqueArtifactZipName + "/pyth_cosmwasm.wasm"
);
contractBytesDict[uniqueArtifactZipName] = contractBytes;
}
// clear tmp directory after downloading contracts
rimrafSync(tmpCodeStorageDir);
return contractBytesDict;
}
export const WORMHOLE_CONTRACT_VERSION = "2.14.9";
// This method returns the file name which stores the deployment result for
// wormhole stub
export function getWormholeFileName(
chainId: string,
version: string,
mainnet: boolean
): string {
const WORMHOLE_STORAGE_DIR = mainnet
? "../wormhole-stub/mainnet"
: "../wormhole-stub/testnet";
return `${WORMHOLE_STORAGE_DIR}/${chainId}-${version}.json`;
}
// This method will read the wormhole file with the deployment resutt and will
// return the deployed wormhole contract address
export function getWormholeContractAddress(
chainId: string,
version: string,
mainnet: boolean
): string {
let deployedFilePath = getWormholeFileName(chainId, version, mainnet);
const wormholeContractAddress = JSON.parse(
readFileSync(deployedFilePath).toString()
)["instantiate-contract"].result.contractAddr;
if (wormholeContractAddress === undefined)
throw new Error(
"Wormhole contract address should be present in the file" +
deployedFilePath
);
return wormholeContractAddress;
}
export function hexToBase64(hex: string): string {
return Buffer.from(hex, "hex").toString("base64");
}

View File

@ -0,0 +1,187 @@
import {
ChainIdsTestnet,
createExecutorForChain,
} from "./chains-manager/chains";
import yargs from "yargs";
import { hideBin } from "yargs/helpers";
import {
InstantiateContractResponse,
StoreCodeResponse,
} from "./chains-manager/chain-executor";
import { Pipeline } from "./pipeline";
import {
WORMHOLE_CONTRACT_VERSION,
getContractBytesDict,
getWormholeContractAddress,
} from "./helper";
import { ExtendedChainsConfigTestnet } from "./extended-chain-config";
import { sha256 } from "@cosmjs/crypto";
import { CHECKSUM } from "./contract-checksum";
const argv = yargs(hideBin(process.argv))
.usage("USAGE: npm run wormhole-stub -- <command>")
.option("mnemonic", {
type: "string",
demandOption: "Please provide the mnemonic",
})
.option("contract-version", {
type: "string",
demandOption: `Please input the contract-version of the pyth contract.`,
})
.option("chain-id", {
type: "string",
choices: ChainIdsTestnet,
})
.option("mainnet", {
type: "boolean",
desc: "Execute this script for mainnet networks. THIS WILL BE ADDED IN FUTURE",
})
.help()
.alias("help", "h")
.wrap(yargs.terminalWidth())
.parseSync();
async function run() {
const STORAGE_DIR = "./testnet/instantiate-pyth";
// get the wasm code from github
let contractBytesDict = await getContractBytesDict(
Object.values(ExtendedChainsConfigTestnet).map(
({ pythArtifactZipName }) => pythArtifactZipName
),
argv.contractVersion
);
// check that the downloaded code has the same checksum as the one hardcoded in contract-checksum.ts
for (let key in contractBytesDict) {
const hardcodedChecksum = CHECKSUM[argv.contractVersion][key];
if (hardcodedChecksum === undefined)
throw new Error(
`Contract for ${key} doesn't have a checksum in "contract-checksum.ts"`
);
const downloadedCodeChecksum = Buffer.from(
sha256(contractBytesDict[key])
).toString("hex");
if (downloadedCodeChecksum !== hardcodedChecksum)
throw new Error(
`Checksum doesn't match for ${key}. \n Downloaded file checksum ${downloadedCodeChecksum}. Hardcoded checksum ${hardcodedChecksum}`
);
}
console.log();
let chainIds = argv.chainId === undefined ? ChainIdsTestnet : [argv.chainId];
for (let chainId of chainIds) {
let pipelineStoreFilePath = `${STORAGE_DIR}/${chainId}-${argv.contractVersion}.json`;
const pipeline = new Pipeline(chainId, pipelineStoreFilePath);
const chainExecutor = createExecutorForChain(
ExtendedChainsConfigTestnet[chainId],
argv.mnemonic
);
// add stages
// 1 deploy artifact
pipeline.addStage({
id: "deploy-pyth-code",
executor: async () => {
return chainExecutor.storeCode({
contractBytes:
contractBytesDict[
ExtendedChainsConfigTestnet[chainId].pythArtifactZipName
],
});
},
});
// 2 instantiate contract
pipeline.addStage({
id: "instantiate-contract",
executor: (getResultOfPastStage) => {
const storeCodeRes: StoreCodeResponse =
getResultOfPastStage("deploy-pyth-code");
return chainExecutor.instantiateContract({
codeId: storeCodeRes.codeId,
instMsg: getPythConfig({
feeDenom: ExtendedChainsConfigTestnet[chainId].feeDenom,
wormholeChainId:
ExtendedChainsConfigTestnet[chainId].wormholeChainId,
wormholeContract: getWormholeContractAddress(
chainId,
WORMHOLE_CONTRACT_VERSION,
false
),
}),
label: "wormhole",
});
},
});
// 3 set its own admin
pipeline.addStage({
id: "set-own-admin",
executor: (getResultOfPastStage) => {
const instantiateContractRes: InstantiateContractResponse =
getResultOfPastStage("instantiate-contract");
return chainExecutor.updateContractAdmin({
newAdminAddr: instantiateContractRes.contractAddr,
contractAddr: instantiateContractRes.contractAddr,
});
},
});
await pipeline.run();
}
}
function getPythConfig({
feeDenom,
wormholeContract,
wormholeChainId,
}: {
feeDenom: string;
wormholeContract: string;
wormholeChainId: number;
}) {
return {
wormhole_contract: wormholeContract,
governance_source_index: 0,
governance_sequence_number: 0,
chain_id: wormholeChainId,
valid_time_period_secs: 60,
fee: {
amount: "1",
denom: feeDenom,
},
// All contracts on any network are using mainnet data sources.
data_sources: [
{
emitter: Buffer.from(
"6bb14509a612f01fbbc4cffeebd4bbfb492a86df717ebe92eb6df432a3f00a25",
"hex"
).toString("base64"),
chain_id: 1,
},
{
emitter: Buffer.from(
"f8cd23c2ab91237730770bbea08d61005cdda0984348f3f6eecb559638c0bba0",
"hex"
).toString("base64"),
chain_id: 26,
},
],
governance_source: {
emitter: Buffer.from(
"5635979a221c34931e32620b9293a463065555ea71fe97cd6237ade875b12e9e",
"hex"
).toString("base64"),
chain_id: 1,
},
};
}
run();

View File

@ -1,22 +1,6 @@
import { readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
import { createInterface } from "readline";
import path from "path";
// This function lets you write a question to the terminal
// And returns the response of the user
function readLineAsync(msg: string) {
const readline = createInterface({
input: process.stdin,
output: process.stdout,
});
return new Promise((resolve) => {
readline.question(msg, (userRes) => {
resolve(userRes);
});
});
}
// The stage executor is where the stage functionality is defined
// Optionally it can take in a method `getResultOfPastStage` as a parameter
// if it wants to access the result of the previous stages
@ -129,6 +113,8 @@ export class Pipeline {
// This method is only going to process stage if all the past ones have been fulfilled
let fulfilled = await this.processStage(stage);
console.log(`${this.id}: Processed stage with id: ${stage.id}`);
// store the whole processing locally after every stage
this.pipelineStore.commit();
if (fulfilled === false) break;
@ -170,6 +156,7 @@ class PipelineStore {
// for permanent storage
commit() {
mkdirSync(path.dirname(this.filePath), { recursive: true });
writeFileSync(this.filePath, JSON.stringify(this.store, null, 4));
// The "\n" at the end of the line is to satisfy the formatting rules
writeFileSync(this.filePath, JSON.stringify(this.store, null, 2) + "\n");
}
}

View File

@ -1,5 +1,4 @@
import {
ChainIdTestnet,
ChainIdsTestnet,
createExecutorForChain,
} from "./chains-manager/chains";
@ -11,7 +10,8 @@ import {
StoreCodeResponse,
} from "./chains-manager/chain-executor";
import { Pipeline } from "./pipeline";
import { CHAINS } from "@pythnetwork/xc-governance-sdk";
import { getWormholeFileName, hexToBase64 } from "./helper";
import { ExtendedChainsConfigTestnet } from "./extended-chain-config";
const argv = yargs(hideBin(process.argv))
.usage("USAGE: npm run wormhole-stub -- <command>")
.option("mnemonic", {
@ -20,8 +20,9 @@ const argv = yargs(hideBin(process.argv))
})
.option("contract-version", {
type: "string",
demandOption: `Please input the contract-version of the wormhole contract.
desc: `Please input the contract-version of the wormhole contract.
There should be a compiled code at the path - "../wormhole-stub/artifacts/wormhole-\${contract-version}.wasm"`,
default: "2.14.9",
})
.option("chain-id", {
type: "string",
@ -30,46 +31,23 @@ const argv = yargs(hideBin(process.argv))
.option("mainnet", {
type: "boolean",
desc: "Execute this script for mainnet networks. THIS WILL BE ADDED IN FUTURE",
default: false,
})
.help()
.alias("help", "h")
.wrap(yargs.terminalWidth())
.parseSync();
// IMPORTANT: IN ORDER TO RUN THIS SCRIPT FOR CHAINS
// WE NEED SOME METADATA
// HERE IS WHERE WE WILL BE ADDING THAT
// The type definition here make sure that the chain is added to xc_governance_sdk_js before this script was executed
type WormholeConfig = Record<
ChainIdTestnet,
{ feeDenom: string; chainId: number }
>;
const wormholeConfig: WormholeConfig = {
[ChainIdTestnet.INJECTIVE]: {
feeDenom: "inj",
chainId: CHAINS.injective,
},
[ChainIdTestnet.OSMOSIS_4]: {
feeDenom: "uosmo",
chainId: CHAINS.osmosis,
},
[ChainIdTestnet.OSMOSIS_5]: {
feeDenom: "uosmo",
chainId: CHAINS.osmosis,
},
[ChainIdTestnet.SEI_ATLANTIC_2]: {
feeDenom: "usei",
chainId: CHAINS.sei,
},
[ChainIdTestnet.NEUTRON_PION_1]: {
feeDenom: "untrn",
chainId: CHAINS.neutron,
},
const VAA_MAINNET_UPGRADES = {
GUARDIAN_SET_UPGRADE_1_VAA:
"010000000001007ac31b282c2aeeeb37f3385ee0de5f8e421d30b9e5ae8ba3d4375c1c77a86e77159bb697d9c456d6f8c02d22a94b1279b65b0d6a9957e7d3857423845ac758e300610ac1d2000000030001000000000000000000000000000000000000000000000000000000000000000400000000000005390000000000000000000000000000000000000000000000000000000000436f7265020000000000011358cc3ae5c097b213ce3c81979e1b9f9570746aa5ff6cb952589bde862c25ef4392132fb9d4a42157114de8460193bdf3a2fcf81f86a09765f4762fd1107a0086b32d7a0977926a205131d8731d39cbeb8c82b2fd82faed2711d59af0f2499d16e726f6b211b39756c042441be6d8650b69b54ebe715e234354ce5b4d348fb74b958e8966e2ec3dbd4958a7cdeb5f7389fa26941519f0863349c223b73a6ddee774a3bf913953d695260d88bc1aa25a4eee363ef0000ac0076727b35fbea2dac28fee5ccb0fea768eaf45ced136b9d9e24903464ae889f5c8a723fc14f93124b7c738843cbb89e864c862c38cddcccf95d2cc37a4dc036a8d232b48f62cdd4731412f4890da798f6896a3331f64b48c12d1d57fd9cbe7081171aa1be1d36cafe3867910f99c09e347899c19c38192b6e7387ccd768277c17dab1b7a5027c0b3cf178e21ad2e77ae06711549cfbb1f9c7a9d8096e85e1487f35515d02a92753504a8d75471b9f49edb6fbebc898f403e4773e95feb15e80c9a99c8348d",
GUARDIAN_SET_UPGRADE_2_VAA:
"01000000010d0012e6b39c6da90c5dfd3c228edbb78c7a4c97c488ff8a346d161a91db067e51d638c17216f368aa9bdf4836b8645a98018ca67d2fec87d769cabfdf2406bf790a0002ef42b288091a670ef3556596f4f47323717882881eaf38e03345078d07a156f312b785b64dae6e9a87e3d32872f59cb1931f728cecf511762981baf48303668f0103cef2616b84c4e511ff03329e0853f1bd7ee9ac5ba71d70a4d76108bddf94f69c2a8a84e4ee94065e8003c334e899184943634e12043d0dda78d93996da073d190104e76d166b9dac98f602107cc4b44ac82868faf00b63df7d24f177aa391e050902413b71046434e67c770b19aecdf7fce1d1435ea0be7262e3e4c18f50ddc8175c0105d9450e8216d741e0206a50f93b750a47e0a258b80eb8fed1314cc300b3d905092de25cd36d366097b7103ae2d184121329ba3aa2d7c6cc53273f11af14798110010687477c8deec89d36a23e7948feb074df95362fc8dcbd8ae910ac556a1dee1e755c56b9db5d710c940938ed79bc1895a3646523a58bc55f475a23435a373ecfdd0107fb06734864f79def4e192497362513171530daea81f07fbb9f698afe7e66c6d44db21323144f2657d4a5386a954bb94eef9f64148c33aef6e477eafa2c5c984c01088769e82216310d1827d9bd48645ec23e90de4ef8a8de99e2d351d1df318608566248d80cdc83bdcac382b3c30c670352be87f9069aab5037d0b747208eae9c650109e9796497ff9106d0d1c62e184d83716282870cef61a1ee13d6fc485b521adcce255c96f7d1bca8d8e7e7d454b65783a830bddc9d94092091a268d311ecd84c26010c468c9fb6d41026841ff9f8d7368fa309d4dbea3ea4bbd2feccf94a92cc8a20a226338a8e2126cd16f70eaf15b4fc9be2c3fa19def14e071956a605e9d1ac4162010e23fcb6bd445b7c25afb722250c1acbc061ed964ba9de1326609ae012acdfb96942b2a102a2de99ab96327859a34a2b49a767dbdb62e0a1fb26af60fe44fd496a00106bb0bac77ac68b347645f2fb1ad789ea9bd76fb9b2324f25ae06f97e65246f142df717f662e73948317182c62ce87d79c73def0dba12e5242dfc038382812cfe00126da03c5e56cb15aeeceadc1e17a45753ab4dc0ec7bf6a75ca03143ed4a294f6f61bc3f478a457833e43084ecd7c985bf2f55a55f168aac0e030fc49e845e497101626e9d9a5d9e343f00010000000000000000000000000000000000000000000000000000000000000004c1759167c43f501c2000000000000000000000000000000000000000000000000000000000436f7265020000000000021358cc3ae5c097b213ce3c81979e1b9f9570746aa5ff6cb952589bde862c25ef4392132fb9d4a42157114de8460193bdf3a2fcf81f86a09765f4762fd1107a0086b32d7a0977926a205131d8731d39cbeb8c82b2fd82faed2711d59af0f2499d16e726f6b211b39756c042441be6d8650b69b54ebe715e234354ce5b4d348fb74b958e8966e2ec3dbd4958a7cd66b9590e1c41e0b226937bf9217d1d67fd4e91f574a3bf913953d695260d88bc1aa25a4eee363ef0000ac0076727b35fbea2dac28fee5ccb0fea768eaf45ced136b9d9e24903464ae889f5c8a723fc14f93124b7c738843cbb89e864c862c38cddcccf95d2cc37a4dc036a8d232b48f62cdd4731412f4890da798f6896a3331f64b48c12d1d57fd9cbe7081171aa1be1d36cafe3867910f99c09e347899c19c38192b6e7387ccd768277c17dab1b7a5027c0b3cf178e21ad2e77ae06711549cfbb1f9c7a9d8096e85e1487f35515d02a92753504a8d75471b9f49edb6fbebc898f403e4773e95feb15e80c9a99c8348d",
GUARDIAN_SET_UPGRADE_3_VAA:
"01000000020d00ce45474d9e1b1e7790a2d210871e195db53a70ffd6f237cfe70e2686a32859ac43c84a332267a8ef66f59719cf91cc8df0101fd7c36aa1878d5139241660edc0010375cc906156ae530786661c0cd9aef444747bc3d8d5aa84cac6a6d2933d4e1a031cffa30383d4af8131e929d9f203f460b07309a647d6cd32ab1cc7724089392c000452305156cfc90343128f97e499311b5cae174f488ff22fbc09591991a0a73d8e6af3afb8a5968441d3ab8437836407481739e9850ad5c95e6acfcc871e951bc30105a7956eefc23e7c945a1966d5ddbe9e4be376c2f54e45e3d5da88c2f8692510c7429b1ea860ae94d929bd97e84923a18187e777aa3db419813a80deb84cc8d22b00061b2a4f3d2666608e0aa96737689e3ba5793810ff3a52ff28ad57d8efb20967735dc5537a2e43ef10f583d144c12a1606542c207f5b79af08c38656d3ac40713301086b62c8e130af3411b3c0d91b5b50dcb01ed5f293963f901fc36e7b0e50114dce203373b32eb45971cef8288e5d928d0ed51cd86e2a3006b0af6a65c396c009080009e93ab4d2c8228901a5f4525934000b2c26d1dc679a05e47fdf0ff3231d98fbc207103159ff4116df2832eea69b38275283434e6cd4a4af04d25fa7a82990b707010aa643f4cf615dfff06ffd65830f7f6cf6512dabc3690d5d9e210fdc712842dc2708b8b2c22e224c99280cd25e5e8bfb40e3d1c55b8c41774e287c1e2c352aecfc010b89c1e85faa20a30601964ccc6a79c0ae53cfd26fb10863db37783428cd91390a163346558239db3cd9d420cfe423a0df84c84399790e2e308011b4b63e6b8015010ca31dcb564ac81a053a268d8090e72097f94f366711d0c5d13815af1ec7d47e662e2d1bde22678113d15963da100b668ba26c0c325970d07114b83c5698f46097010dc9fda39c0d592d9ed92cd22b5425cc6b37430e236f02d0d1f8a2ef45a00bde26223c0a6eb363c8b25fd3bf57234a1d9364976cefb8360e755a267cbbb674b39501108db01e444ab1003dd8b6c96f8eb77958b40ba7a85fefecf32ad00b7a47c0ae7524216262495977e09c0989dd50f280c21453d3756843608eacd17f4fdfe47600001261025228ef5af837cb060bcd986fcfa84ccef75b3fa100468cfd24e7fadf99163938f3b841a33496c2706d0208faab088bd155b2e20fd74c625bb1cc8c43677a0163c53c409e0c5dfa000100000000000000000000000000000000000000000000000000000000000000046c5a054d7833d1e42000000000000000000000000000000000000000000000000000000000436f7265020000000000031358cc3ae5c097b213ce3c81979e1b9f9570746aa5ff6cb952589bde862c25ef4392132fb9d4a42157114de8460193bdf3a2fcf81f86a09765f4762fd1107a0086b32d7a0977926a205131d8731d39cbeb8c82b2fd82faed2711d59af0f2499d16e726f6b211b39756c042441be6d8650b69b54ebe715e234354ce5b4d348fb74b958e8966e2ec3dbd4958a7cd15e7caf07c4e3dc8e7c469f92c8cd88fb8005a2074a3bf913953d695260d88bc1aa25a4eee363ef0000ac0076727b35fbea2dac28fee5ccb0fea768eaf45ced136b9d9e24903464ae889f5c8a723fc14f93124b7c738843cbb89e864c862c38cddcccf95d2cc37a4dc036a8d232b48f62cdd4731412f4890da798f6896a3331f64b48c12d1d57fd9cbe7081171aa1be1d36cafe3867910f99c09e347899c19c38192b6e7387ccd768277c17dab1b7a5027c0b3cf178e21ad2e77ae06711549cfbb1f9c7a9d8096e85e1487f35515d02a92753504a8d75471b9f49edb6fbebc898f403e4773e95feb15e80c9a99c8348d",
};
async function run() {
const STORAGE_DIR = "../wormhole-stub/testnet";
let wasmFilePath = `../wormhole-stub/artifacts/wormhole-${argv.contractVersion}.wasm`;
// get the wormhole code
@ -77,10 +55,17 @@ async function run() {
let chainIds = argv.chainId === undefined ? ChainIdsTestnet : [argv.chainId];
for (let chainId of chainIds) {
let pipelineStoreFilePath = `${STORAGE_DIR}/${chainId}-${argv.contractVersion}.json`;
let pipelineStoreFilePath = getWormholeFileName(
chainId,
argv.contractVersion,
argv.mainnet
);
const pipeline = new Pipeline(chainId, pipelineStoreFilePath);
const chainExecutor = createExecutorForChain(chainId, argv.mnemonic);
const chainExecutor = createExecutorForChain(
ExtendedChainsConfigTestnet[chainId],
argv.mnemonic
);
// add stages
// 1 deploy artifact
@ -103,7 +88,7 @@ async function run() {
return chainExecutor.instantiateContract({
codeId: storeCodeRes.codeId,
instMsg: getWormholeConfig(wormholeConfig[chainId]),
instMsg: getWormholeConfig(ExtendedChainsConfigTestnet[chainId]),
label: "wormhole",
});
},
@ -123,19 +108,36 @@ async function run() {
},
});
// 4 vaa upgrades for guardian set
Object.keys(VAA_MAINNET_UPGRADES).forEach((id) => {
pipeline.addStage({
id,
executor: (getResultOfPastStage) => {
const instantiateContractRes: InstantiateContractResponse =
getResultOfPastStage("instantiate-contract");
return chainExecutor.executeContract({
contractAddr: instantiateContractRes.contractAddr,
msg: {
// @ts-ignore
submit_v_a_a: { vaa: hexToBase64(VAA_MAINNET_UPGRADES[id]) },
},
});
},
});
});
await pipeline.run();
}
}
function getWormholeConfig({
feeDenom,
chainId,
}: {
interface ReqWormholeConfig {
feeDenom: string;
chainId: number;
}) {
wormholeChainId: number;
}
function getWormholeConfig({ feeDenom, wormholeChainId }: ReqWormholeConfig) {
return {
chain_id: chainId,
chain_id: wormholeChainId,
fee_denom: feeDenom,
gov_chain: 1,
gov_address: "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ=",

View File

@ -0,0 +1,22 @@
{
"deploy-pyth-code": {
"status": "fulfilled",
"result": {
"txHash": "193319C684AB2D1CA0681F051D987A2112027A87A8F9BB75C938AF51B65E6F9B",
"codeId": 1138
}
},
"instantiate-contract": {
"status": "fulfilled",
"result": {
"txHash": "5B8D14C4AA0D75C42681F6F1E68F4DD4DF49EB5B3D5DD97DF421B5C89F878A16",
"contractAddr": "inj1yzx0wdn6t7xrjdpgztnrraq57nw2zxhstr97xw"
}
},
"set-own-admin": {
"status": "fulfilled",
"result": {
"txHash": "FDEC7C27C8B2AB1148C7AFEFD8AEB8D64F5119CFA70898803A0F88C56AE1A64F"
}
}
}

View File

@ -0,0 +1,22 @@
{
"deploy-pyth-code": {
"status": "fulfilled",
"result": {
"codeId": 1807,
"txHash": "92123EFAEC260CAF9141AEE163CA4185C410EE82E4387AED2D95BA0C9F2068D1"
}
},
"instantiate-contract": {
"status": "fulfilled",
"result": {
"contractAddr": "juno1ygyhu0zn69zm0354nzpd7zrp5xs9vpkqcuk7kfneyghrpa87msmqeskxqa",
"txHash": "09CC1174E8816F8628E2F17887CB718766E3B1032A4173A85682BF278A1DB53D"
}
},
"set-own-admin": {
"status": "fulfilled",
"result": {
"txHash": "042B4697E5CAFCB73C8EC5514C9A8E52CC3BD96BC645DD47F07030C5B075A545"
}
}
}

View File

@ -0,0 +1,22 @@
{
"deploy-pyth-code": {
"status": "fulfilled",
"result": {
"codeId": 245,
"txHash": "23783BB7AE1D66EA132B25C505B9E15F4E899D58EA8A57545C62BBB50DC40F9D"
}
},
"instantiate-contract": {
"status": "fulfilled",
"result": {
"contractAddr": "neutron1zpn7yhxqx2f0c6cpmp3fr42yafupz9elglvgdss2300c847ph0hsgurhlj",
"txHash": "24372E431DA7DD46DCFCABA1E18E6C8427A03EE2D6BE9DB4E700906FEEF333FC"
}
},
"set-own-admin": {
"status": "fulfilled",
"result": {
"txHash": "A604787CA8E32079B1A05CE5BDED1183E46102860E1A5A924A1A15B9932947BC"
}
}
}

View File

@ -0,0 +1,22 @@
{
"deploy-pyth-code": {
"status": "fulfilled",
"result": {
"codeId": 6957,
"txHash": "BEA793ECF41BE43AFD43254D4241C6D2C9124271371A52D1856116EE68B953E3"
}
},
"instantiate-contract": {
"status": "fulfilled",
"result": {
"contractAddr": "osmo1xws8v2yv50v0spn90yr9fe9zx8zxfppl3syn38zw59npvp8dd70sutnvsm",
"txHash": "C2BE424676D9680CFA8AE1C3DFD09E489D4D65A2A37EA0C5D311BFB21DF39A4A"
}
},
"set-own-admin": {
"status": "fulfilled",
"result": {
"txHash": "8500646587F80EEE7E066263236DB4C01D4F41EF7BD6F0029542B18771CA03FD"
}
}
}

View File

@ -0,0 +1,22 @@
{
"deploy-pyth-code": {
"status": "fulfilled",
"result": {
"codeId": 60,
"txHash": "4F4C940801C122C4F25DBF4E5BFC513859C8EBAE596E2225E9274C724A1C29BE"
}
},
"instantiate-contract": {
"status": "fulfilled",
"result": {
"contractAddr": "osmo12u2vqdecdte84kg6c3d40nwzjsya59hsj048n687m9q3t6wdmqgsq6zrlx",
"txHash": "8793156BE964DCF2631F2EE4E6C3D9FF9E037ACD89ABB3DA3B3242766CA689E7"
}
},
"set-own-admin": {
"status": "fulfilled",
"result": {
"txHash": "4E329EE9AE8F63DFC5C876573D5EA66063C875B4591B13555855937FE57B31B6"
}
}
}

View File

@ -0,0 +1,22 @@
{
"deploy-pyth-code": {
"status": "fulfilled",
"result": {
"codeId": 370,
"txHash": "C6290D3455B244DD9B8503E5F219EECA29DB7B750B3FFC36CE07C7002743F522"
}
},
"instantiate-contract": {
"status": "fulfilled",
"result": {
"contractAddr": "sei1977nnu5jqatteqgve8tx7nzu9y7eh6cvq0e4g6xjx8tf5wm4nkmsfljunh",
"txHash": "D0ACC86A5098E70F6DCA8408EE41C3E774836F2C2796DADBEE5DAC70D74582DD"
}
},
"set-own-admin": {
"status": "fulfilled",
"result": {
"txHash": "5C5ACED6A47A32BB1990656FBC4960BCB12847CEC32C0BC61F44D2DB07B3E07B"
}
}
}

View File

@ -18,5 +18,23 @@
"result": {
"txHash": "5B31A48AEF4250FAA09117EF63E49E81B6EFBFAC1B1C6AEFF80265434A70DD7D"
}
},
"GUARDIAN_SET_UPGRADE_1_VAA": {
"status": "fulfilled",
"result": {
"txHash": "C68250F924EF5E97DA190EBEEFA550CDACC8E6F51B280AC47E7569025DE35534"
}
},
"GUARDIAN_SET_UPGRADE_2_VAA": {
"status": "fulfilled",
"result": {
"txHash": "C320BDBD719DFD5B1074AB901C4A64B209C5F882B90D8AD785D28E6C5EE4C05F"
}
},
"GUARDIAN_SET_UPGRADE_3_VAA": {
"status": "fulfilled",
"result": {
"txHash": "C20DD672BABB67868FC53E2EAF1113AFBBE718365211259D2338F746C37513F5"
}
}
}

View File

@ -0,0 +1,40 @@
{
"deploy-wormhole-code": {
"status": "fulfilled",
"result": {
"codeId": 1806,
"txHash": "F7B066A9B667F4E66F9FEF5D2EDF6E997645AE99018F261AA9B03C0B86E5EEEA"
}
},
"instantiate-contract": {
"status": "fulfilled",
"result": {
"contractAddr": "juno1ar2pvs0p2a67fcg0x26paq0zckqs9fjxmfcwuy8hvvam68g24kdsh6pt52",
"txHash": "C922ABBADD9E2042DDE4DE88F9F30B41AFE53D41DD29FA8714F492735422BEB9"
}
},
"set-own-admin": {
"status": "fulfilled",
"result": {
"txHash": "F7720D2F24481BD718881B5C7394948ECEDB0A59DAD884E15164A51AF1F7BD9F"
}
},
"GUARDIAN_SET_UPGRADE_1_VAA": {
"status": "fulfilled",
"result": {
"txHash": "1EE0886A74FF1A76D1552209085FC345294CDE7300BBFD4D32423FA1D275E971"
}
},
"GUARDIAN_SET_UPGRADE_2_VAA": {
"status": "fulfilled",
"result": {
"txHash": "6809F305AC6ED188BD00C390CA6737D0A5F36BA39D8ED8504F181810671A1E20"
}
},
"GUARDIAN_SET_UPGRADE_3_VAA": {
"status": "fulfilled",
"result": {
"txHash": "8B09ED936129EDBC7FC19B00A292BCF9B9FF0819028E039C68B861F60DC94A6C"
}
}
}

View File

@ -18,5 +18,23 @@
"result": {
"txHash": "B9188160725B5282D11DB83F1AC28F88879A4C03AF7B6F178EA44BD07BB76805"
}
},
"GUARDIAN_SET_UPGRADE_1_VAA": {
"status": "fulfilled",
"result": {
"txHash": "6ACF2A42CEE311F5D2C980AE8CD90D0DC92330EDA940E49BEDBB7C9A8FE2802F"
}
},
"GUARDIAN_SET_UPGRADE_2_VAA": {
"status": "fulfilled",
"result": {
"txHash": "621914F52BC5BED6BF5F4D6966B8FDF7BDA4E552D1A69AA4BE78FA0C7C5500AC"
}
},
"GUARDIAN_SET_UPGRADE_3_VAA": {
"status": "fulfilled",
"result": {
"txHash": "4ED3C3AF3223030E2BBB9068767C1E8C60B7D7E5895BDE586F0E07CAA649A05C"
}
}
}

View File

@ -18,5 +18,23 @@
"result": {
"txHash": "CACD7F3608E915AC629B399C63EE2C595583AE76418949847B43795208F656EE"
}
},
"GUARDIAN_SET_UPGRADE_1_VAA": {
"status": "fulfilled",
"result": {
"txHash": "068EF47F42D6A1D44EFD4100B91CCE5A5050F505A088567271F5B6689A224EE5"
}
},
"GUARDIAN_SET_UPGRADE_2_VAA": {
"status": "fulfilled",
"result": {
"txHash": "AA7D06318A6945F1519A8C7DAD75141BCBC21C1F7E800B48C8045AAF1BF8A887"
}
},
"GUARDIAN_SET_UPGRADE_3_VAA": {
"status": "fulfilled",
"result": {
"txHash": "0C67CABFC942171919425A1D8A64AB40D4FF5FC49667D0B6B161704DB9C22E0C"
}
}
}

View File

@ -18,5 +18,23 @@
"result": {
"txHash": "E4CA160348165532DBE7B43C116A801E78FE77122928DB9F9D4DB41514F53F53"
}
},
"GUARDIAN_SET_UPGRADE_1_VAA": {
"status": "fulfilled",
"result": {
"txHash": "0C75CE16C91F32A902E43A6326B63800DA5182EFC52AA245E101C6374E3671B1"
}
},
"GUARDIAN_SET_UPGRADE_2_VAA": {
"status": "fulfilled",
"result": {
"txHash": "F58EF5AC1A1941362339A2355F2A2DD44BF46522C37E3D60602C0E731B36F0B6"
}
},
"GUARDIAN_SET_UPGRADE_3_VAA": {
"status": "fulfilled",
"result": {
"txHash": "59984BB3216E6A7D44501B11EE1F51735E9DE9C8D24D87343B9DDB480F3B5ED3"
}
}
}

View File

@ -18,5 +18,23 @@
"result": {
"txHash": "3BFF9026BCAF0B08C1A6FDE3F26D051860D21CCCC1DF28D9A09D0C9F570815A0"
}
},
"GUARDIAN_SET_UPGRADE_1_VAA": {
"status": "fulfilled",
"result": {
"txHash": "CED60F9D4502BF3FC369048B404DF437349323C5786DF8D1D8E6FDDDBC70E855"
}
},
"GUARDIAN_SET_UPGRADE_2_VAA": {
"status": "fulfilled",
"result": {
"txHash": "A7A5CDDBE806530830B006D1E90F8C152BF4DE50AFC1567EA209FCB0854334C1"
}
},
"GUARDIAN_SET_UPGRADE_3_VAA": {
"status": "fulfilled",
"result": {
"txHash": "F0C189FDCB03F26568BDA7597C94235C92197D0B1C5591CCD6510F374DF9480D"
}
}
}