Skip to content

Transaction部分修改

FZQA edited this page Oct 23, 2018 · 3 revisions
                             |——p2p广播交易-收到交易-继续广播和处理交易
初始化-产生交易-签名-本地交易池|——处理交易—打包区块—共识上链-广播区块
eth.sendMintTransaction()
↓↓↓
func SendMintTransaction()    internal/ethapi/api.go
↓↓↓
args.toTransaction() //原字段写入
tx.SetTxCode()       //新添加字段Code写入
↓↓↓
func SetTxCode()   core/types/transaction.go

Transaction struct--txdata struct--code uint8(新添加字段Code)

通过hash得到区块信息

eth.getTransaction()
↓↓↓
func GetTransactionByHash()   internal/ethapi/api.go
↓↓↓
ReadTransaction()
newRPCTransaction()
↓↓↓
tx.GetTxCodeStr()  core/types/transaction.go

RPCTransaction struct --code string(新添加字段Code)

执行交易(修改金额)

func commitTransactions()  miner/worker.go
↓↓↓
func commitTransaction()  miner/worker.go
↓↓↓
func AplplyTransaction()  core/state_processor.go
↓↓↓
func ApplyMessage()   core/state_transition.go
↓↓↓
func TransitionDb()    core/state_transition.go
↓↓↓
evm.Call()
func Call() core/vm/evm.go
↓↓↓
evm.Transfer()
func Transfer()   //修改金额    core/evm.go
↓↓↓
SubBalance()      AddBalance()

1. 方案设计

VNT零知识设计方案

方案设计图

2. 方案实现

实现细节思考

2.1 libsnark模块实现

2.2 ethereum模块实现

2.3 cgo模块实现

3. 方案测试

部分问题

整体测试出的问题

3.1 libsnark模块测试

3.2 整体测试

4. 修改汇总

4.1 libsnark模块修改汇总

4.2 ethereum模块修改汇总

4.3 cgo模块修改汇总

5. 开发技巧

修改并编译web3.js文件

libsnark遇到的大“坑”

FZQA

CGO

MPT trie

transaction 部分修改

简易以太坊测试

Clone this wiki locally