这是我到目前为止的 F# 代码 -
let parseChainId rawTransaction =
let tx = TransactionFactory.CreateTransaction rawTransaction
let chainIdWithAddend = (IntTypeDecoder().DecodeBigInteger tx.Signature.V - BigInteger 35) / BigInteger 2
let addend = ???
let chainId = chainIdWithAddend - addend
chainId
但是,我确信此代码在某些情况下是不完整的,因为我无法弄清楚如何确定https://github.com/ethereum/EIPs/blob/master/EIPS中指定的 {0, 1} 加数/eip-155.md
如果我能弄清楚如何确定加数,那么我相信上面的链 id 提取算法就完成了。