NEAR 协议可替代代币逻辑 NEP-21

Posted

技术标签:

【中文标题】NEAR 协议可替代代币逻辑 NEP-21【英文标题】:NEAR Protocol Fungible Tokens logic NEP-21 【发布时间】:2021-05-14 14:27:55 【问题描述】:

我有以下问题: fungible Token example 和 NEP-21 本身。

    escrow allowances > 0,但account balance = 0 时可能出现这种情况。 是否合法?为什么? 它从不检查account_id 是否存在。为什么?安全吗? 任何人都可以拨打:inc_allowance/dec_allowance?

对于let owner_id = env::predecessor_account_id();,将自动创建新帐户和新的托管限额(如果不存在)。这个逻辑正确吗?为什么?

    get_account 总是创建一个新帐户。看起来很多余。

例如:

fn get_account(&self, owner_id: &AccountId) -> Account 
    assert!(env::is_valid_account_id(owner_id.as_bytes()), "Owner's account ID is invalid");
    let account_hash = env::sha256(owner_id.as_bytes());
    self.accounts.get(&account_hash).unwrap_or_else(|| Account::new(account_hash))

将为新owner_id 创建“始终”新帐户。并且有可能永远不会使用该帐户。那么用get_account默默“创建”一个账号真的可行吗?

    transfer_from 永远不会检查 owner_id 作为帐户的真正所有者。是否有逻辑可以保护仅由真实所有者进行的转让? 为什么可替代令牌没有名称/标题? NEAR 协议是否有一些可替代代币交换的标准或逻辑?

【问题讨论】:

【参考方案1】:

当托管限额> 0,但账户余额= 0时,这是一种可能的情况。是否合法流动?为什么?

AFAIU 津贴只是防止滥用的合理上限。两个帐户可以为同一个帐户设置两个津贴,它们的总和大于帐户余额。

它从不检查 account_id 是否存在。为什么?安全吗?

在分片区块链中,如果没有异步跨合约调用,就不可能检查账户是否存在,因为其他账户可能存在于不同的分片上。此外,当我们收到来自其他分片的回复时,可以创建/删除该帐户。

任何人都可以调用:inc_allowance/dec_allowance?

只能由所有者调用,见:https://github.com/near/near-sdk-rs/blob/master/examples/fungible-token/src/lib.rs#L106

对于 let owner_id = env::predecessor_account_id();将自动创建新帐户,新的托管津贴(如果不存在)。这个逻辑正确吗?为什么?

是的。我不确定,为什么这会是矛盾的。

get_account 总是创建一个新帐户。看起来是多余的。

这可能是多余的,但在这种情况下,编译器也可能会对其进行优化:https://github.com/near/near-sdk-rs/blob/master/examples/fungible-token/src/lib.rs#L213

transfer_from 永远不会检查 owner_id 作为帐户的真正所有者。是否有逻辑可以保护仅由真实所有者进行的转让?

在这个检查中暗示:https://github.com/near/near-sdk-rs/blob/master/examples/fungible-token/src/lib.rs#L174-L180 如果不是托管的情况,那么env::predecessor_account_id() 应该等于owner_id。所以收据/交易一定是从所有者的账户发出的。

为什么可替代代币没有名称/标题?

我们正在努力将元数据添加到我们的合同中,请在此处查看我们的第一季度 OKR:https://airtable.com/shrw0AD36eIbfEW02

NEAR 协议是否有一些可替代代币交换的标准或逻辑?

我们有合作伙伴致力于实施类似的东西,但我认为我们没有标准。

【讨论】:

以上是关于NEAR 协议可替代代币逻辑 NEP-21的主要内容,如果未能解决你的问题,请参考以下文章

合约可以在 NEAR 协议中自行删除吗?

可能不会有人告诉你的,关于Swarm背后的逻辑

android蓝牙

什么是NFT? NFT有哪些平台和项目?Near下获取NFT实践(Mintbase)

为啥 VS 不为逻辑运算符定义替代标记?

替代iframe新逻辑