From b7903d16f9ec2dcd1805d4b888195147eeb3c22b Mon Sep 17 00:00:00 2001 From: QiaoPengjun5162 Date: Fri, 27 Sep 2024 14:30:27 +0800 Subject: [PATCH] =?UTF-8?q?docs:=202024.09.27=20Starknet=20tx=20=E7=94=9F?= =?UTF-8?q?=E5=91=BD=E5=91=A8=E6=9C=9F=20Learning?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- qiaopengjun.md | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/qiaopengjun.md b/qiaopengjun.md index d1c6277..5c7731a 100644 --- a/qiaopengjun.md +++ b/qiaopengjun.md @@ -586,7 +586,38 @@ transaction 是由你的钱包发起的,可以是智能手机或笔记本电 ### 2024.09.27 -笔记内容 +Tx 生命周期 +你发送一笔交易,需要对其进行签署,然后该交易被发送到内存池,内存池会检查该交易结构是否正确、字段是否正确以及格式是否正确 +当交易被确认时,Starknet 就会接收它, 这时候它的状态就会变成 RECEIVED +如果发生某些事情,比如智能手机和排序器直接的连接中断了,你的交易将被忽略,故它的状态会变成 IGNORED +这个状态并不是一个标准状态,它意味着Starknet不会知道你的交易 +有可能发生交易已经到了内存池,但因为格式不正确,比如使用了错误的客户端或SDK。在这种情况下,Sequencer 排序器会忽略该交易,不会解析其中的数据。 +如果交易格式正确,被排序器和内存池接收,下一步就到签名验证阶段了,每笔交易都必须签名,如果签名不正确,意味着它的公私钥不对应,交易会被拒绝。如果签名有效,它就继续在CairoVM 虚拟机中运行。 +如果排序器能成功使用 CairoVM 执行该交易,它的状态会变为ACCEPTEN_ON_L2。也就是在L2 上被接受。这就是在L2 上最终被确认的状态。是在Starknet 上执行你的交易后网络的新状态。 +如果在执行过程中发生某些事情,例如、燃气耗尽或者断言错误,交易将停止并执行回滚。但你仍然会被收取执行交易从发生到回滚哪一刻产生的费用,最终的状态会变为 REVERTED。 +无论交易成功或失败,最终都会生成 trace,并发送给证明者,证明者会生成有效证明,如果被以太坊接受,交易状态将变为ACCEPTED_ON_L1,也就是说在 L1 上被接受。 +总结:你的交易首先被内存池接收并确认,如果结构正确,通过签名验证,它将进入CairoVM 虚拟机执行,如果执行失败,交易将被拒绝。如果执行成功,交易将获得在L2 上被接受的状态,即 ACCEPTED_ON_L2。并在L2 上达到最终确认。有效性证明生成后发送给以太坊的验证器,如果被接受,交易状态将变为在L1上被接受,即 ACCEPTED_ON_L1。这就是整个生命周期 + +Tx 类型 +声明 Declare + +在 SN 注册新的类 +调用 Invoke + +执行 write 函数 +部署账户 deploy_account + +部署账户合约 +假设性部署 - 部署账户合约 +没有账户合约的前提下如何部署账户合约 + +预先计算合约地址 +给这个地址发送资金 +发送 deploy_account tx +序列器扣减 gas 后部署 +部署账户合约与常规的智能合约是不同的 + +要部署智能合约你需要先有智能钱包 ### 2024.09.28