-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add: ops script to initialize gateway program #20
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,90 @@ | ||||||||||
// this is for ops on devnet/mainnet | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Unclear what ops means, if this is to deploy the gateway, it should be reflected in the name of the script? |
||||||||||
// uncomment Anchor.toml [test] to run this script | ||||||||||
// #test = "yarn run ts-mocha -p ./tsconfig.json -t 1000000 tests/ops.ts" | ||||||||||
Comment on lines
+2
to
+3
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Unclear what does this mean. We should put instruction to run the script in the readme |
||||||||||
|
||||||||||
import * as anchor from "@coral-xyz/anchor"; | ||||||||||
import {Program, web3} from "@coral-xyz/anchor"; | ||||||||||
import {Gateway} from "../target/types/gateway"; | ||||||||||
import {expect} from "chai"; | ||||||||||
import {bufferToHex} from "ethereumjs-util"; | ||||||||||
import {getAccount} from "@solana/spl-token"; | ||||||||||
|
||||||||||
const programId = new web3.PublicKey("ZETAjseVjuFsxdRxo6MmTCvqFwb3ZHUx56Co3vCmGis"); | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Can we move all hardcoded values to constants in a separate file, and add the ability of overriding them via env vars? |
||||||||||
|
||||||||||
(async ()=> { | ||||||||||
console.log("====================================="); | ||||||||||
console.log("BEGIN OPS ON DEVNET........"); | ||||||||||
|
||||||||||
const provider = anchor.AnchorProvider.local("https://api.devnet.solana.com"); | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Comment above mention it c mainnet but here the URL is devnet. I think we should use an environment variable for it There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Agree, same as mentioned before: we could group all constants in const.ts, adding the ability to override them via env var. |
||||||||||
anchor.setProvider(provider); | ||||||||||
console.log("wallet address:", provider.publicKey.toBase58()); | ||||||||||
const conn = provider.connection; | ||||||||||
const bal = await conn.getBalance(provider.publicKey); | ||||||||||
console.log("balance:", bal); | ||||||||||
const wallet = anchor.workspace.Gateway.provider.wallet.payer; | ||||||||||
console.log("payer address:", wallet.publicKey.toBase58()); | ||||||||||
|
||||||||||
const acctInfo = await conn.getAccountInfo(programId); | ||||||||||
console.log("acctInfo of gateway program :", acctInfo); | ||||||||||
|
||||||||||
const seeds = [Buffer.from("meta", "utf-8")]; | ||||||||||
const [pdaAccount] = anchor.web3.PublicKey.findProgramAddressSync( | ||||||||||
seeds, | ||||||||||
programId, | ||||||||||
); | ||||||||||
console.log("pdaAccount:", pdaAccount.toBase58()); | ||||||||||
|
||||||||||
const gatewayProgram = anchor.workspace.Gateway as Program<Gateway>; | ||||||||||
|
||||||||||
console.log("gateway provider", gatewayProgram.provider); | ||||||||||
const tssAddress = "0x8531a5ab847ff5b22d855633c25ed1da3255247e"; | ||||||||||
// translate the above hex string into an array of number into tssAddress | ||||||||||
const tssAddressArray = tssAddress.slice(2).match(/.{1,2}/g).map(byte => parseInt(byte, 16)); | ||||||||||
const chain_id = 901; | ||||||||||
const chain_id_bn = new anchor.BN(chain_id); | ||||||||||
|
||||||||||
console.log("tssAddressArray:", tssAddressArray); | ||||||||||
console.log("chain_id_bn:", chain_id_bn.toNumber()); | ||||||||||
|
||||||||||
// Uncomment the following to initialize the gateway program; | ||||||||||
// can only be initialized once | ||||||||||
// try { | ||||||||||
// const inst = await gatewayProgram.methods.initialize(tssAddressArray,chain_id_bn).transaction(); | ||||||||||
// console.log("initialize inst:", inst); | ||||||||||
// const tx = await anchor.web3.sendAndConfirmTransaction(conn, inst, [wallet]); | ||||||||||
// console.log("tx:", tx); | ||||||||||
// } catch (err) { | ||||||||||
// console.log("initialize err:", err); | ||||||||||
// } | ||||||||||
Comment on lines
+49
to
+58
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We should rather have argument or using environment variable to customize script logic |
||||||||||
|
||||||||||
const pdaAccountInfo = await conn.getAccountInfo(pdaAccount); | ||||||||||
console.log("pdaAccountInfoData:", pdaAccountInfo.data); | ||||||||||
// const pdaAccountData = await gatewayProgram.account.pda.fetch(pdaAccount); | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||
try { | ||||||||||
console.log("fetching pda account data....", pdaAccount.toBase58()); | ||||||||||
// const data = await gatewayProgram.account.pda.fetch(pdaAccount); | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||
const ainfo = await gatewayProgram.account.pda.fetch(pdaAccount) | ||||||||||
console.log(`pda account data: nonce ${ainfo.nonce}`); | ||||||||||
const hexAddr = bufferToHex(Buffer.from(ainfo.tssAddress)); | ||||||||||
console.log(`pda account data: tss address ${hexAddr}`); | ||||||||||
console.log(`authority: ${ainfo.authority.toBase58()}`); | ||||||||||
console.log(`depositPaused: ${ainfo.depositPaused}`); | ||||||||||
console.log(`chain_id: ${ainfo.chainId}`); | ||||||||||
|
||||||||||
// console.log(`pda data:`, ainfo); | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||
} catch(e) { | ||||||||||
console.log("error:", e); | ||||||||||
} | ||||||||||
// console.log(`pda account data: nonce ${pdaAccountData.nonce}`); | ||||||||||
// const hexAddr = bufferToHex(Buffer.from(pdaAccountData.tssAddress)); | ||||||||||
// console.log(`pda account data: tss address ${hexAddr}`); | ||||||||||
// console.log(`authority: ${pdaAccountData.authority.toBase58()}`); | ||||||||||
Comment on lines
+78
to
+81
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||
|
||||||||||
|
||||||||||
console.log("END OPS ON DEVNET........") | ||||||||||
console.log("====================================="); | ||||||||||
})(); | ||||||||||
|
||||||||||
|
||||||||||
|
||||||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.