在阅读了有关 NEAR 如何处理交易的更多信息后,我想出了这张关于几个关键部分如何相关的图片。
我正在寻求有关如何纠正此问题的一些指示。
首先,我目前知道的几个关键点是:
Action
必须是网络上 7 个受支持的操作之一CreateAccount
创建一个新帐户(为个人、公司、合同、汽车、冰箱等)DeployContract
部署新合约(使用自己的帐户)FunctionCall
调用合约上的方法(计算和存储预算)Transfer
将代币从一个账户转移到另一个账户Stake
表示有兴趣在下一个可用的机会成为权益证明验证者AddKey
将密钥添加到现有帐户(FullAccess
或FunctionCall
访问)DeleteKey
从帐户中删除现有密钥DeleteAccount
删除账户(并将余额转入受益人账户)
a
Transaction
是Action
s 的集合,增加了关于它们的关键信息- 来源(即由 加密签名
signer
) - 目的地或意图(即发送或应用到
receiver
) - 新近度(即
block_hash
与最近区块的距离在可接受的范围内) - 唯一性(即
nonce
对于给定的必须是唯一的signer
)
- 来源(即由 加密签名
- a
SignedTransaction
是由上述帐户Transaction
加密签名的signer
Receipt
s 基本上是 NEARAction
在它们从外部(不受信任)传递到内部(受信任)我们网络的“信任边界”之后所称的 s。经过加密验证为有效、最新和唯一的,aReceipt
已Action
准备好在区块链上进行处理。- 因为,根据设计,每个
Account
人都存在于系统中的一个且只有一个分片上,所以Receipt
s 要么应用于它们首次出现的分片,要么通过网络路由到它们各自sender
和receiver
帐户的适当“主分片”。DeleteKey
是一个Action
永远不需要被路由到超过 1 个分片,而Transfer
总是被路由到超过 1 个分片,除非两者signer
并且receiver
碰巧有相同的“主分片” - “最终性小工具”是一组规则,用于平衡最大化区块链“活跃性”(即响应性/性能)的紧迫性与最小化接受无效交易到区块链上的风险所需的安全性。其中一条规则包括在完成(或有时撤销)交易之前“等待一段时间”——这相当于在确认交易已“完成”之前等待几分钟处理 120 个区块。
---.
o--------o | o------------------------o o-------------------o
| Action | | | Transaction | | SignedTransaction |
o--------o | | | | |
| | o--------o | | o-------------o |
o--------o | | | Action | signer | | | Transaction | |
| Action | | --> | o--------o receiver | --> | | | | ---.
o--------o | | | Action | block_hash | | | | | |
| | o--------o nonce | | | | | |
o--------o | | | Action | | | | | | |
| Action | | | o--------o | | o-------------o | |
o--------o | o------------------------o o-------------------o |
---' |
|
sent to network |
.---------------------------------------------------------------------------'
| <----------
|
| ---.
| XXX o--------o o---------o |
| XX | Action | --> | Receipt | |
| o--------------------------------o o--------o o---------o |
| | | |
| | 1. Validation (block_hash) | o--------o o---------o |
'--> | 2. Verification (signer keys) | | Action | --> | Receipt | | --.
| 3. Routing (receiver) | o--------o o---------o | |
| | | |
o--------------------------------o o--------o o---------o | |
transaction arrives XX | Action | --> | Receipt | | |
XXX o--------o o---------o | |
---' |
|
applied locally OR propagated to other shards |
.---------------------------------------------------------------------------'
| <----------
|
|
| --. .-------. .--. .--. .--. o-----------o
| o---------o | | | | | | | | | | |
'--> | Receipt | | Shard | | | | | | | | | |
o---------o | A | | | | | | | | | |
| --' | | | | | | | | | |
| | | | | | | | | | |
| --. | | | | | | | | | Block |
| o---------o | | Block | | | | | o o o | | | (i) |
'--> | Receipt | | | (i) | | | | | | | | finalized |
o---------o | | | | | | | | | | |
| | Shard | | | | | | | | | |
| o---------o | B | | | | | | | | | |
'--> | Receipt | | | | | | | | | | | |
o---------o | | | | | | | | | | |
--' '-------' '--' '--' '--' o-----------o
| |
'------------------------------------------------'
about 120 blocks to finality