在Aptos上,发送令牌的主要方式分为两个阶段,一个由发送方提供,然后由收件人接受。但是,如果用户选择允许直接传输,则发送方只需在单个事务中向接收方发送NFT。如何检查用户是否选择了直接传输?
发布于 2022-11-20 15:40:31
您可以通过查看帐户上的0x3::token::TokenStore资源来判断帐户是否选择了直接转账。例如,使用curl:
curl https://fullnode.mainnet.aptoslabs.com/v1/accounts/0x232098630cfad4734812fa37dc18d9b8d59242feabe49259e26318d468a99584/resource/0x3::token::TokenStore上面的卷曲意思是“为我获取帐户上的0x3::token::TokenStore资源0x232098630cfad4734812fa37dc18d9b8d59242feabe49259e26318d468a99584。
输出(通过jq运行):
{
"type": "0x3::token::TokenStore",
"data": {
"burn_events": {
"counter": "0",
"guid": {
"id": {
"addr": "0x232098630cfad4734812fa37dc18d9b8d59242feabe49259e26318d468a99584",
"creation_num": "6"
}
}
},
"deposit_events": {
"counter": "6",
"guid": {
"id": {
"addr": "0x232098630cfad4734812fa37dc18d9b8d59242feabe49259e26318d468a99584",
"creation_num": "4"
}
}
},
"direct_transfer": true,
"mutate_token_property_events": {
"counter": "1",
"guid": {
"id": {
"addr": "0x232098630cfad4734812fa37dc18d9b8d59242feabe49259e26318d468a99584",
"creation_num": "7"
}
}
},
"tokens": {
"handle": "0x91744f237fa81aedf45199a8c2bd568e7e329e48e02ae82786632fd0ebd3ad01"
},
"withdraw_events": {
"counter": "0",
"guid": {
"id": {
"addr": "0x232098630cfad4734812fa37dc18d9b8d59242feabe49259e26318d468a99584",
"creation_num": "5"
}
}
}
}
}如果direct_transfer是真的,那么他们选择了直接转帐。
使用TS SDK,它看起来如下所示:
const client = new AptosClient(NODE_URL);
const resource = await client.getAccountResource(
accountAddress,
"0x3::token::TokenStore",
);
const hasOptedIn = (resource.data as any)["direct_transfer"]如果在尝试检索0x3::token::TokenStore时获得404,这也意味着它们没有选择直接传输,因为它们从未与令牌交互过。
https://stackoverflow.com/questions/74509522
复制相似问题