pyth-crosschain/ethereum/truffle-config.js

212 lines
4.9 KiB
JavaScript
Raw Normal View History

2022-01-13 13:44:32 -08:00
require("dotenv").config({ path: ".env" });
const HDWalletProvider = require("@truffle/hdwallet-provider");
2020-08-06 14:32:31 -07:00
module.exports = {
Merge Dev.v2 into main (#181) * Move js sdk on p2w-sdk to js folder Also modifies other dependencies to correct path * Reversed removal of wasm build for nodejs * Add newline to a file * pyth2wormhole: Fix attestation validation bug commit-id:567942d7 * Add p2w sdk It uses Pyth clients structs and cleans some of definitions for Pyth2Wormhole structures. * Add emitter type and add wasm function for it - It requires solitaire and it requires nightly rust - No logic is applied, code is from p2w solana contract. (Eventually will be removed from there) * Add new line * Move WASM gen docker to root It is because wasm is going to be used for p2w-sdk too. * Fix unchanged cache mount paths * Move terra relayer into the repo * Update readme * p2w-client: Add lib target, make helpers into lib functions there commit-id:3aeb9ee6 * pyth2wormhole-client: Implement retries commit-id:462677a2 * Make p2w-sdk js use p2w-sdk rust wasm bindings (#65) * Make p2w-sdk js use p2w-sdk rust wasm bindings (instead of solana contract bindings) - Removes `wasm.rs` in solana contract too. * p2w attester contract use p2w-sdk (#68) * Make solana pyth2wormhole contract to use the sdk * Use threadpool to set up price symbols (#69) * Add solana feature flag for p2w sdk (#71) * Pyth bridge terra contract support batch attestation + use p2w sdk (#72) * Make terra contract to use pyth2wormhole-sdk and support batch attestation * Update packages + code format * Move terra dockerfile out to support third-party dependency * pyth2wormhole-client: Add polling-based concurrent tx confirmation commit-id:5d16d035 * chore: p2w spy guarding improve Dockerfile * fix: p2w_autoattest don't die after initialization also minimal formatting * add P2W_EXIT_ON_ERROR * set P2W_EXIT_ON_ERROR default to True * Remove bool test * hopefully this time. * add tilt p2w-attest P2W_EXIT_ON_ERROR * convert P2W_EXIT_ON_ERROR to "true" * Fix pyth test publisher (#76) * Fix test pyth publisher to actually publish price - Uses newer pyth images and removes existing hacks for old versions. It essentially makes dockers cleaner. - Also improve some adds in dockers to cache more efficiently * Support Batch Price attestation for terra relay (#75) * Support Batch Price attestation for terra relay * Abehjati/update p2w sdk to pyth sdk (#83) * Make p2w-sdk use pyth-sdk * Correct test values to reflect .env.test * update p2w sdk to use ema instead of twa (#84) * Rename twa to ema in terra relay (#85) * Bring PythStructs.PriceAttestation struct in line with new API * Add ability to parse batch price attestations * Pyth terra remove wormhole governance (#87) * Pyth in terra: remove wormhole governance * [WIP] p2w-relay-iface: Add NPM package with relayer interface PoC commit-id:efcb9b34 * Define Pyth SDK Price struct * Define internal PythStructs.PriceInfo struct * Cache price updates in standardised PriceInfo format * Cache price updates from batch attestations * p2w-relay-iface -> p2w-relay-terra/src/relay/iface.ts commit-id:ed9846e3 * p2w relay interface: remove config from Relay iface commit-id:0359d886 * Remove now unnused parsePriceAttestation function * Pyth terra bridge: add contract deployment script (#88) * Add pyth deployment script - Also updates build.sh to build pyth completely - Add a readme for deployment guide * Add test for partial update behaviour * update p2w sdk to new pyth (#91) * p2w-sdk/rust use pyth sdk solana v2 * Dockerfile.client: solana 1.8.1 -> 1.9.4 commit-id:643299d3 * p2w-terra-relay: ignore lib and node, own project dir in docker commit-id:b084bc40 * p2w-terra-relay: iface.ts review nits, naive impl for Terra commit-id:0ecbfdd6 * Terra contract public api (#79) * Use pyth-sdk in terra contract * Update terra contract according to agreed API - Also adds v2 suffix to price_info key because this migration is breaking. * p2w-terra-relay: apply review nits commit-id:aec39c85 * p2w-terra-relay: make worker.ts generic w.r.t. Relay interface commit-id:5937a08c * terra.ts: add missing return statement commit-id:ba0365e6 * Update worket to handle timeout in callback correctly (#97) * Remove wormhole-based governance * Remove now unused legacy governance state and variables * Remove Pyth Implementation implementation * p2w-terra-relay: run formatter commit-id:df311e23 * p2w-terra-relay: apply review nits commit-id:5034b061 * Run formatter to trigger CI commit-id:7c643d79 * p2w-terra-relay: EVM boilerplate commit-id:8ad73ded * Remove old PythProxy inheritance hierarchy * Remove now unnused initialized implementations map * Remove old mock bridge implementation * Remove dependency to wormhole sdk as path and cleanup wrong eth copies (#104) * Dockerfile.pyth_relay: Fix lockfile issue in ethereum This commit fixes a lockfile issue resulting from newer NPM in our container. Specifically, our Dockerfile is pinned, relaxes Ethereum's lockfile (npm ci -> npm install) and hardens our lockfile (npm install -> npm ci) commit-id:3381c8ec * p2w-terra-relay: Admit loss against mkdir -p commit-id:3abdb58d * Remove unused components from wormhole (#108) * Remove unused components from wormhole Removes the following: - explorer - e2e - bridge_ui - algorand stuff (teal dockerfile and third_party/algorand) - ci_tests (testing directory) which are for JS/Bridge UI * Remove unused terra contracts (#109) - Note: Terra contract addresses are changed by this PR due to deterministic ordering. - Removed unused nft and token bridge, and migration contracts in Terra - Modified documentation to remove info regarding removed contracts.(docs/devnet.md) * Remove unused solana contracts and their wasm creations (#110) Removes token bridge, nft bridge, migration. Also removes them from deployments and docs. * Add fee estimate for terra relay (#112) * Removes directores which are not related to p2w (#111) Removes - audits - dashboards (dashboard is removed from Tilt) - event_database (all of it's dependencies are removed from Tilt and it's not for p2w) - lp_ui: a project (pressumably liquidity pool) not related to p2w - sdk: wormhole sdk, p2w depends on it's npm package and there is no dependency to rust one - spydk: it's not anywhere in p2w - staging/algorand: these are for alrogrand which is not used in p2w - whitepapers: these are for wormhole * Add and update openzeppelin packages * Add initializer to Pyth contract * Add upgradable PythProxy contract * Update tests to work with new proxy setup * Update migrate script to work with new proxy setup * Add tests for new proxy setup * Inline PythStorage.Provider struct * Make Pyth.verifyPythVM function internal * Fix struct field names * Rename Price to PriceFeed to be consistent with SDK * Replace PythGetters.latestPriceInfo with Pyth.queryPriceFeed in public API * p2w-terra-relay: Add a query() EVM call and Tilt boilerplate commit-id:f97d0c16 * Clarify test comments * Add health probe (#107) * Rename PythProxy to PythUpgradable * p2w-evm-relay: Backport the proxy address change from debug session commit-id:55b63ed5 * p2w-terra-relay -> p2w-relay, split EVM relay into new service commit-id:36d0db6e * Tiltfile: typo commit-id:3bbba986 * p2w-evm-relay.yaml: typo commit-id:35c87c79 * p2w-evm-relay.yaml: typo 2: electric boogaloo commit-id:40892265 * Add build folder to dockerignore * Rename attestPriceBatch to updatePriceBatchFromVm * Update comment on time check * Trigger Build * Tiltfile: Fix port forwards for p2w-evm-relay commit-id:6e5e9c14 * p2w-relay: PythImplementation -> PythUpgradable commit-id:bfea7eb5 * Remove unused Pyth Chain ID metadata * Add the query() call commit-id:02966ce5 * p2w-terra-relay: Fix evm.ts after contract rename commit-id:87381bec * Make truffle migrations directory configurable * p2w-evm-relay: Fix wrong EVM contract ID, add a check for it This commit takes care of an outdated pyth2wormhole EVM contract address and implements a contract/non-contract check using web3.eth.getCode() (empty for non-contracts). This problem cost us several hours of debugging and resulted from an EVM gotcha - a contract call to a non-contract address will simply ignore the call payload and make a plain transfer. Additionally, ETH accounts don't have a notion of initialization - used and unused addresses are equally valid tx recipients. Resulting from both properties, any unused address could potentially yield wrongly successful calls, wasting funds and debug time over p2w-relay. Thus the heuristic to protect us from this is to see if the address' code storage is populated. commit-id:b655a720 * p2w-relay: Also implement the contract check in EVM relay() commit-id:e28709e5 * evm.ts: Fix wording in changed/unchanged logs commit-id:13c81625 * Make terra relayer more resillient (#120) - Increase retry attempts (4 to 6) and retry_delay (250ms to 1s) to be more resillient - This is because when account sequence mismatch happens it might take some time be fixed - Removed estimate fee because it's being done in wallet.createAndSignTx (less requests) - Improved logging on when error happens * Update dockerfile to chown less files (#121) * Update dockerfile to chown sooner * p2w-relay: review nits * p2w-evm-relay: make feed verification queries configurable * p2w-relay: cache wormhole import * p2w-relay: formatter, remove getcode() from relay(), add comments commit-id:1a65c52c * p2w-relay: typos and leftovers commit-id:9b523b25 * Change websocket to json socket to support bsc testnet + improves env vars (#139) * Change websocket to json socket to support bsc testnet + imporving env vars * Add unit test to Pyth Terra Contract (#123) * Add unit test to the terra contract - Refactors the code into multiple functions to make unit testing easier - Adds build and test of terra contract to CI according to #73 * p2w-relay: harden exception handling, yell about uncaught stuff commit-id:24e14835 * p2w-relay: Correct outdated comment commit-id:d0b57d33 * p2w-evm-relay: s/async (e)/(e)/ commit-id:11b3a474 * Modify proto docker and tiltfile to stop creating unnecessary files (#144) * Remove sdk/spydk from wasm and remove buf gen web yaml (#145) * Remove wormhole contract from wasm generation (#160) * pyth2wormhole: Add num_publishers to libraries and contracts commit-id:f7263eed * pyth2wormhole: add max_num_publishers to cross-chain metadata commit-id:7550fa50 * Move p2w relayer parsing to p2w sdk js (#162) * Move Price Attestation parsing logic to the sdk * pyth2wormhole: Add contract testing boilerplate for attest() commit-id:51949fbe * Create p2w-api base (from p2w-relay) (#142) * Create p2w-api base (from p2w-relay) * Refactor project structure * Rename p2w to pyth price service (#166) * Abehjati/price-service-add-rest-layer (#167) * Add rest api for latest vaa Co-authored-by: Stan Drozd <[email protected]> Co-authored-by: Eran Davidovich <[email protected]> Co-authored-by: Eran Davidovich <[email protected]> Co-authored-by: Tom Pointon <[email protected]> Co-authored-by: Stan Drozd <[email protected]>
2022-04-11 09:15:20 -07:00
migrations_directory: process.env.MIGRATIONS_DIR,
2022-01-13 13:44:32 -08:00
networks: {
development: {
host: "127.0.0.1",
port: 8545,
network_id: "*",
},
mainnet: {
provider: () =>
new HDWalletProvider(
process.env.MNEMONIC,
`https://mainnet.infura.io/v3/` + process.env.INFURA_KEY
),
network_id: 1,
gas: 10000000,
2022-01-26 08:15:10 -08:00
gasPrice: 191000000000,
2022-01-13 13:44:32 -08:00
confirmations: 1,
timeoutBlocks: 200,
skipDryRun: false,
},
ropsten: {
provider: () =>
new HDWalletProvider(
process.env.MNEMONIC,
`https://ropsten.infura.io/v3/` + process.env.INFURA_KEY
),
network_id: 3,
gas: 5500000,
confirmations: 2,
timeoutBlocks: 200,
skipDryRun: true,
},
2022-01-13 13:44:32 -08:00
rinkeby: {
provider: () =>
new HDWalletProvider(
process.env.MNEMONIC,
`https://rinkeby.infura.io/v3/` + process.env.INFURA_KEY
),
network_id: 4,
gas: 5500000,
confirmations: 2,
timeoutBlocks: 200,
skipDryRun: true,
},
goerli: {
provider: () => {
return new HDWalletProvider(
process.env.MNEMONIC,
"https://goerli.infura.io/v3/" + process.env.INFURA_KEY
);
},
network_id: "5",
gas: 4465030,
gasPrice: 10000000000,
skipDryRun: true,
2022-01-13 13:44:32 -08:00
},
bnb: {
2022-01-13 13:44:32 -08:00
provider: () => {
return new HDWalletProvider(
process.env.MNEMONIC,
"https://bsc-dataseed.binance.org/"
);
},
network_id: "56",
gas: 70000000,
gasPrice: 8000000000,
},
bnb_testnet: {
2022-01-26 08:15:10 -08:00
provider: () => new HDWalletProvider(
process.env.MNEMONIC,
"https://data-seed-prebsc-1-s1.binance.org:8545"
2022-01-26 08:15:10 -08:00
),
network_id: "97",
confirmations: 10,
networkCheckTimeout: 1000000,
timeoutBlocks: 1000,
skipDryRun: true,
2022-01-26 08:15:10 -08:00
},
polygon: {
provider: () => {
return new HDWalletProvider(
process.env.MNEMONIC,
"https://polygon-rpc.com"
);
},
network_id: "137",
gas: 10000000,
gasPrice: 700000000000,
},
mumbai: {
provider: () => {
return new HDWalletProvider(
process.env.MNEMONIC,
"https://polygon-testnet-rpc.allthatnode.com:8545")
2022-01-26 08:15:10 -08:00
},
network_id: "80001",
},
avalanche: {
provider: () => {
return new HDWalletProvider(
process.env.MNEMONIC,
"https://api.avax.network/ext/bc/C/rpc"
);
},
network_id: "43114",
gas: 8000000,
gasPrice: 26000000000,
},
fuji: {
provider: () => new HDWalletProvider(
process.env.MNEMONIC,
"https://api.avax-test.network/ext/bc/C/rpc"
),
network_id: "43113",
},
2022-01-13 13:44:32 -08:00
oasis: {
provider: () => {
return new HDWalletProvider(
process.env.MNEMONIC,
"https://emerald.oasis.dev/"
);
},
network_id: 42262,
gas: 4465030,
gasPrice: 30000000000,
},
aurora: {
provider: () => {
return new HDWalletProvider(
process.env.MNEMONIC,
"https://mainnet.aurora.dev"
);
},
network_id: 1313161554,
},
aurora_testnet: {
provider: () => {
return new HDWalletProvider(
process.env.MNEMONIC,
"https://testnet.aurora.dev"
)
},
network_id: 0x4e454153,
gas: 10000000,
from: "0xC42e9476b0a458097087336e2395Dbf45B0BdC12", // public key
},
fantom: {
provider: () => {
return new HDWalletProvider(
process.env.MNEMONIC,
"https://rpc.ftm.tools/"
)
},
network_id: 250,
gas: 8000000,
gasPrice: 3000000000000,
timeoutBlocks: 15000,
},
fantom_testnet: {
provider: () => {
return new HDWalletProvider(
process.env.MNEMONIC,
"https://rpc.testnet.fantom.network/"
)
},
network_id: 0xfa2,
gas: 4465030,
gasPrice: 300000000000,
},
celo: {
provider: () => {
return new HDWalletProvider(
process.env.MNEMONIC,
"https://forno.celo.org"
)
},
network_id: 42220,
},
celo_alfajores_testnet: {
provider: () => {
return new HDWalletProvider(
process.env.MNEMONIC,
"https://alfajores-forno.celo-testnet.org"
)
},
network_id: 44787,
},
2022-01-13 13:44:32 -08:00
},
2020-08-06 14:32:31 -07:00
2022-01-13 13:44:32 -08:00
compilers: {
solc: {
version: "0.8.4",
settings: {
optimizer: {
enabled: true,
runs: 200,
},
},
2020-08-06 14:32:31 -07:00
},
2022-01-13 13:44:32 -08:00
},
2020-08-17 14:01:59 -07:00
2022-01-13 13:44:32 -08:00
plugins: ["@chainsafe/truffle-plugin-abigen", "truffle-plugin-verify"],
2022-01-13 13:44:32 -08:00
api_keys: {
etherscan: process.env.ETHERSCAN_KEY,
},
2020-08-06 14:32:31 -07:00
};