【问题标题】:do all NEAR blockchain transactions require a receiver account?所有 NEAR 区块链交易都需要接收方帐户吗?
【发布时间】:2020-03-15 06:14:29
【问题描述】:

阅读一些documentation here 并看到交易定义的一部分是所有操作都“在接收者的帐户之上”执行,并且接收者帐户是“交易将被路由到的帐户” 。”

同样在 nearlib SDK 中,the transactions interface 包含一个名为 signTransaction 的方法,该方法需要 receiverId 作为参数

async function signTransaction(receiverId: string, nonce: number, actions: Action[], blockHash: Uint8Array, signer: Signer, accountId?: string, networkId?: string): Promise<[Uint8Array, SignedTransaction]> {

但是查看 nearcore 支持的交易列表,我想知道为什么其中一些交易需要接收器。

除了TransferAddKeyDeleteKeyDeleteAccount 之外,为什么任何交易都需要“接收方”?

我认为“接收者”的概念过于字面意思,例如“他们接收交易的结果或影响”?相反,这不是正确的思考方式吗?

或者在某些情况下receiverId是可选的,但是接口只需要一个值来避免验证麻烦?

这就是我认为的full list of supported transactions

pub enum Action {
    CreateAccount(CreateAccountAction),
    DeployContract(DeployContractAction),
    FunctionCall(FunctionCallAction),
    Transfer(TransferAction),
    Stake(StakeAction),
    AddKey(AddKeyAction),
    DeleteKey(DeleteKeyAction),
    DeleteAccount(DeleteAccountAction),
}

【问题讨论】:

    标签: nearprotocol


    【解决方案1】:

    从概念上讲,每笔交易总是有一个发送者和一个接收者,尽管有时它们可​​能是相同的。因为我们总是将交易转换为发送给接收方的收据,所以在概念上它们是否相同并不重要,即使在实现上可能存在差异。

    【讨论】:

      【解决方案2】:

      很遗憾,我们没有一个好名字来表示我们所说的“接收者”。在我们代码的某些地方,我们也称它为“演员”,因为它实际上是指执行操作的帐户,而不是发出要执行的操作的帐户 em>(又名“发件人”)。

      DeployContract, Stake, AddKey, DeleteKey 需要receiver==sender,也就是说只有账户自己可以添加/删除密钥、质押和部署合约,没有其他账户可以做到为它。

      DeleteAccount同理,需要receiver==sender,但有一个例外:如果帐户由于存储租金即将用完并且低于某个系统定义的阈值,则任何其他帐户都可以将其删除并索取剩余部分平衡。

      CreateAccountFunctionCallTransfer 不需要 receiver==sender。如果CreateAccount receiver 在执行时不应该存在,而是会被实际创建。

      查看实现此逻辑的代码:https://github.com/nearprotocol/nearcore/blob/ed43018851f8ec44f0a26b49fc9a863b71a1428f/runtime/runtime/src/actions.rs#L360

      【讨论】:

      • >> 如果 CreateAccount 接收器在执行时不应该存在,并且实际上会被创建。当我们执行 CreateAccount + AddKey 时会发生什么?如果我们还没有 FullAccessKey 用于创建帐户,我们如何添加初始 AccessKey?
      猜你喜欢
      • 2021-01-15
      • 1970-01-01
      • 2021-07-21
      • 2022-12-15
      • 1970-01-01
      • 2015-11-14
      • 2014-03-20
      • 1970-01-01
      • 2019-04-24
      相关资源
      最近更新 更多