디버깅
anchor_lang
devnet에 deploy
anchor deploy --provider.cluster devnet
anchor idl init -f target/idl/mixture_machine.json 7TzTuLobYxcPJw62EMEq93C72vBd8tmRP8CbQ7e4tS3z
https://project-serum.github.io/anchor/cli/commands.html#idl-upgrade
solana logs 7TzTuLobYxcPJw62EMEq93C72vBd8tmRP8CbQ7e4tS3z
curl <https://api.devnet.solana.com/> -X POST -H "Content-Type: application/json" -d '
{
"jsonrpc": "2.0",
"id": 1,
"method": "getTokenAccountsByOwner",
"params": [
"5qboT7jgnuWNQvSShNKegNbKwzAGkJohhYdZcHdbqUxW", // 프로그램 PDA
{
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"encoding": "jsonParsed"
}
]
}
'
CLI에서 위 명령어 입력하면, json 형식으로, 해당 프로그램 PDA가 소유하고 있는 자식 NFT들의 mint account와 ata 주소들을 뱉어냄.
curl <https://api.devnet.solana.com/> -X POST -H "Content-Type: application/json" -d '
{
"jsonrpc": "2.0",
"id": 1,
"method": "getTokenAccountsByOwner",
"params": [
"5qboT7jgnuWNQvSShNKegNbKwzAGkJohhYdZcHdbqUxW", // 프로그램 PDA
{
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"encoding": "jsonParsed"
}
]
}
'
javascript에선 대충 요거 참고
requests.post()
const web3 = require("@solana/web3.js");
(async () => {
const solana = new web3.Connection("<https://api.devnet.solana.com/>");
const accountPublicKey = new web3.PublicKey(
"Program PDA"
);
const tokenProgram = new web3.PublicKey(
"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
);
console.log(
await solana.getTokenAccountsByOwner(accountPublicKey, {
programId: tokenProgram,
})
);
})();