Skip to main content

replay userop

  <ul className="text-sm leading-8 mb-6">
<li className="text-green-500">
1. 实现owner增删改查
<ul className="ml-5">
<li>1. 将一个owner的操作,保存下来</li>
</ul>
</li>
<li className="text-green-500">
2. 验证新owner
<ul className="ml-5">
<li>1. isOwnerBytes</li>
<li>2. 可以正常交易</li>
</ul>
</li>
<li className="text-green-500">
3. 测试:特殊情况 initCode
<span className="text-orange-400 font-bold">
(调用factory的createAccount方法可以解决,通过EOA钱包比AA便宜很多)
</span>
<ul className="ml-5">
<li>1. initCode 的交易没有存储,这种怎么解决</li>
<li>2. initCode 混在第一笔交易中,每条链上的第一笔交易不一致</li>
<li>
<a
className="text-blue-500"
href="https://github.com/coinbase/smart-wallet/blob/d0491d4b4650e4f6606bd9172812bdfa9524190f/src/CoinbaseSmartWallet.sol#L183-L185"
target="_blank"
rel="noreferrer"
>
3. This allows certain UserOperations to be replayed for all
accounts sharing the same address across chains. E.g. This may
be useful for syncing owner changes.
</a>
</li>
<li className="text-orange-500 font-bold">
4. 如果当前链,第一笔交易刚好是owner相关的交易,
其他链上已经部署过了AA钱包,这个交易不能被replay
</li>
</ul>
</li>
<li>
4. 在另一个链上replay gas 问题{' '}
<ol className="ml-5">
<li className="line-through">
1. paymaster 生成的paymasterData参与签名,不同链的paymaster
policyId 不一样,验证不通过
</li>
<li>2. 无paymaster</li>
<ol className="ml-5">
<li className="line-through">
1. 通过bundler, 有校验 gas相关字段,不通过
</li>
<li>2. 通过 localAccount replay</li>
<li className="line-through">3. 通过 EOA replay </li>
<li className="line-through">4. 通过 EOA writeContract</li>
<li className="text-green-500">4. entryPoint deposit</li>
<li>
5. 通过 OIDC 重新签名callData 走这个owner
<span className="font-bold text-orange-500">
(前提是OIDC是owner, 这也是一个replay)
</span>
</li>
</ol>
</ol>
</li>
</ul>

alt text

fe

be

alt text

alt text