diff options
author | Taylor Gerring <taylor.gerring@gmail.com> | 2015-04-01 01:04:02 +0800 |
---|---|---|
committer | Taylor Gerring <taylor.gerring@gmail.com> | 2015-04-01 01:04:02 +0800 |
commit | 7e3875b52720bf7456c9dd6162caeb7250d3686e (patch) | |
tree | 7670c52c4170b814852be08c4f8ceb4b5d07bde1 /rpc/responses.go | |
parent | a2501ecfcd0709db8bd43ecdc4077d072230fb28 (diff) | |
download | dexon-7e3875b52720bf7456c9dd6162caeb7250d3686e.tar dexon-7e3875b52720bf7456c9dd6162caeb7250d3686e.tar.gz dexon-7e3875b52720bf7456c9dd6162caeb7250d3686e.tar.bz2 dexon-7e3875b52720bf7456c9dd6162caeb7250d3686e.tar.lz dexon-7e3875b52720bf7456c9dd6162caeb7250d3686e.tar.xz dexon-7e3875b52720bf7456c9dd6162caeb7250d3686e.tar.zst dexon-7e3875b52720bf7456c9dd6162caeb7250d3686e.zip |
Remove custom MarshalJSON methods
Now formats based on underlying hexdata or hexnum type. Fields directly
with respective constructors that cover from native types
Diffstat (limited to 'rpc/responses.go')
-rw-r--r-- | rpc/responses.go | 278 |
1 files changed, 83 insertions, 195 deletions
diff --git a/rpc/responses.go b/rpc/responses.go index d2a6c2984..3e9293fbb 100644 --- a/rpc/responses.go +++ b/rpc/responses.go @@ -1,11 +1,6 @@ package rpc import ( - "encoding/json" - // "fmt" - "math/big" - - "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/state" "github.com/ethereum/go-ethereum/core/types" ) @@ -13,84 +8,25 @@ import ( type BlockRes struct { fullTx bool - BlockNumber *big.Int `json:"number"` - BlockHash common.Hash `json:"hash"` - ParentHash common.Hash `json:"parentHash"` - Nonce [8]byte `json:"nonce"` - Sha3Uncles common.Hash `json:"sha3Uncles"` - LogsBloom types.Bloom `json:"logsBloom"` - TransactionRoot common.Hash `json:"transactionRoot"` - StateRoot common.Hash `json:"stateRoot"` - Miner common.Address `json:"miner"` - Difficulty *big.Int `json:"difficulty"` - TotalDifficulty *big.Int `json:"totalDifficulty"` - Size *big.Int `json:"size"` - ExtraData []byte `json:"extraData"` - GasLimit *big.Int `json:"gasLimit"` - MinGasPrice int64 `json:"minGasPrice"` - GasUsed *big.Int `json:"gasUsed"` - UnixTimestamp int64 `json:"timestamp"` + BlockNumber *hexnum `json:"number"` + BlockHash *hexdata `json:"hash"` + ParentHash *hexdata `json:"parentHash"` + Nonce *hexnum `json:"nonce"` + Sha3Uncles *hexdata `json:"sha3Uncles"` + LogsBloom *hexdata `json:"logsBloom"` + TransactionRoot *hexdata `json:"transactionRoot"` + StateRoot *hexdata `json:"stateRoot"` + Miner *hexdata `json:"miner"` + Difficulty *hexnum `json:"difficulty"` + TotalDifficulty *hexnum `json:"totalDifficulty"` + Size *hexnum `json:"size"` + ExtraData *hexdata `json:"extraData"` + GasLimit *hexnum `json:"gasLimit"` + MinGasPrice *hexnum `json:"minGasPrice"` + GasUsed *hexnum `json:"gasUsed"` + UnixTimestamp *hexnum `json:"timestamp"` Transactions []*TransactionRes `json:"transactions"` - Uncles []common.Hash `json:"uncles"` -} - -func (b *BlockRes) MarshalJSON() ([]byte, error) { - var ext struct { - BlockNumber *hexnum `json:"number"` - BlockHash *hexdata `json:"hash"` - ParentHash *hexdata `json:"parentHash"` - Nonce *hexnum `json:"nonce"` - Sha3Uncles *hexdata `json:"sha3Uncles"` - LogsBloom *hexdata `json:"logsBloom"` - TransactionRoot *hexdata `json:"transactionRoot"` - StateRoot *hexdata `json:"stateRoot"` - Miner *hexdata `json:"miner"` - Difficulty *hexnum `json:"difficulty"` - TotalDifficulty *hexnum `json:"totalDifficulty"` - Size *hexnum `json:"size"` - ExtraData *hexdata `json:"extraData"` - GasLimit *hexnum `json:"gasLimit"` - MinGasPrice *hexnum `json:"minGasPrice"` - GasUsed *hexnum `json:"gasUsed"` - UnixTimestamp *hexnum `json:"timestamp"` - Transactions []interface{} `json:"transactions"` - Uncles []*hexdata `json:"uncles"` - } - - // convert strict types to hexified strings - ext.BlockNumber = newHexNum(b.BlockNumber.Bytes()) - ext.BlockHash = newHexData(b.BlockHash.Bytes()) - ext.ParentHash = newHexData(b.ParentHash.Bytes()) - ext.Nonce = newHexNum(b.Nonce[:]) - ext.Sha3Uncles = newHexData(b.Sha3Uncles.Bytes()) - ext.LogsBloom = newHexData(b.LogsBloom.Bytes()) - ext.TransactionRoot = newHexData(b.TransactionRoot.Bytes()) - ext.StateRoot = newHexData(b.StateRoot.Bytes()) - ext.Miner = newHexData(b.Miner.Bytes()) - ext.Difficulty = newHexNum(b.Difficulty.Bytes()) - ext.TotalDifficulty = newHexNum(b.TotalDifficulty.Bytes()) - ext.Size = newHexNum(b.Size.Bytes()) - ext.ExtraData = newHexData(b.ExtraData) - ext.GasLimit = newHexNum(b.GasLimit.Bytes()) - // ext.MinGasPrice = newHexNum(big.NewInt(b.MinGasPrice).Bytes()) - ext.GasUsed = newHexNum(b.GasUsed.Bytes()) - ext.UnixTimestamp = newHexNum(big.NewInt(b.UnixTimestamp).Bytes()) - ext.Transactions = make([]interface{}, len(b.Transactions)) - if b.fullTx { - for i, tx := range b.Transactions { - ext.Transactions[i] = tx - } - } else { - for i, tx := range b.Transactions { - ext.Transactions[i] = newHexData(tx.Hash.Bytes()) - } - } - ext.Uncles = make([]*hexdata, len(b.Uncles)) - for i, v := range b.Uncles { - ext.Uncles[i] = newHexData(v.Bytes()) - } - - return json.Marshal(ext) + Uncles []*hexdata `json:"uncles"` } func NewBlockRes(block *types.Block) *BlockRes { @@ -99,92 +35,67 @@ func NewBlockRes(block *types.Block) *BlockRes { } res := new(BlockRes) - res.BlockNumber = block.Number() - res.BlockHash = block.Hash() - res.ParentHash = block.ParentHash() - res.Nonce = block.Header().Nonce - res.Sha3Uncles = block.Header().UncleHash - res.LogsBloom = block.Bloom() - res.TransactionRoot = block.Header().TxHash - res.StateRoot = block.Root() - res.Miner = block.Header().Coinbase - res.Difficulty = block.Difficulty() - res.TotalDifficulty = block.Td - res.Size = big.NewInt(int64(block.Size())) - res.ExtraData = []byte(block.Header().Extra) - res.GasLimit = block.GasLimit() + res.BlockNumber = newHexNum(block.Number()) + res.BlockHash = newHexData(block.Hash()) + res.ParentHash = newHexData(block.ParentHash()) + res.Nonce = newHexNum(block.Header().Nonce) + res.Sha3Uncles = newHexData(block.Header().UncleHash) + res.LogsBloom = newHexData(block.Bloom()) + res.TransactionRoot = newHexData(block.Header().TxHash) + res.StateRoot = newHexData(block.Root()) + res.Miner = newHexData(block.Header().Coinbase) + res.Difficulty = newHexNum(block.Difficulty()) + res.TotalDifficulty = newHexNum(block.Td) + res.Size = newHexNum(block.Size()) + res.ExtraData = newHexData(block.Header().Extra) + res.GasLimit = newHexNum(block.GasLimit()) // res.MinGasPrice = - res.GasUsed = block.GasUsed() - res.UnixTimestamp = block.Time() - res.Transactions = make([]*TransactionRes, len(block.Transactions())) - for i, tx := range block.Transactions() { - v := NewTransactionRes(tx) - v.BlockHash = block.Hash() - v.BlockNumber = block.Number().Int64() - v.TxIndex = int64(i) - res.Transactions[i] = v - } - res.Uncles = make([]common.Hash, len(block.Uncles())) + res.GasUsed = newHexNum(block.GasUsed()) + res.UnixTimestamp = newHexNum(block.Time()) + res.Transactions = NewTransactionsRes(block.Transactions()) + res.Uncles = make([]*hexdata, len(block.Uncles())) for i, uncle := range block.Uncles() { - res.Uncles[i] = uncle.Hash() + res.Uncles[i] = newHexData(uncle.Hash()) } return res } type TransactionRes struct { - Hash common.Hash `json:"hash"` - Nonce uint64 `json:"nonce"` - BlockHash common.Hash `json:"blockHash"` - BlockNumber int64 `json:"blockNumber"` - TxIndex int64 `json:"transactionIndex"` - From common.Address `json:"from"` - To *common.Address `json:"to"` - Value *big.Int `json:"value"` - Gas *big.Int `json:"gas"` - GasPrice *big.Int `json:"gasPrice"` - Input []byte `json:"input"` -} - -func (t *TransactionRes) MarshalJSON() ([]byte, error) { - var ext struct { - Hash *hexdata `json:"hash"` - Nonce *hexnum `json:"nonce"` - BlockHash *hexdata `json:"blockHash"` - BlockNumber *hexnum `json:"blockNumber"` - TxIndex *hexnum `json:"transactionIndex"` - From *hexdata `json:"from"` - To *hexdata `json:"to"` - Value *hexnum `json:"value"` - Gas *hexnum `json:"gas"` - GasPrice *hexnum `json:"gasPrice"` - Input *hexdata `json:"input"` - } - - ext.Hash = newHexData(t.Hash.Bytes()) - ext.Nonce = newHexNum(big.NewInt(int64(t.Nonce)).Bytes()) - ext.BlockHash = newHexData(t.BlockHash.Bytes()) - ext.BlockNumber = newHexNum(big.NewInt(t.BlockNumber).Bytes()) - ext.TxIndex = newHexNum(big.NewInt(t.TxIndex).Bytes()) - ext.From = newHexData(t.From.Bytes()) - ext.To = newHexData(t.To.Bytes()) - ext.Value = newHexNum(t.Value.Bytes()) - ext.Gas = newHexNum(t.Gas.Bytes()) - ext.GasPrice = newHexNum(t.GasPrice.Bytes()) - ext.Input = newHexData(t.Input) - - return json.Marshal(ext) + Hash *hexdata `json:"hash"` + Nonce *hexnum `json:"nonce"` + BlockHash *hexdata `json:"blockHash"` + BlockNumber *hexnum `json:"blockNumber"` + TxIndex *hexnum `json:"transactionIndex"` + From *hexdata `json:"from"` + To *hexdata `json:"to"` + Value *hexnum `json:"value"` + Gas *hexnum `json:"gas"` + GasPrice *hexnum `json:"gasPrice"` + Input *hexdata `json:"input"` } func NewTransactionRes(tx *types.Transaction) *TransactionRes { var v = new(TransactionRes) - v.Hash = tx.Hash() - v.Nonce = tx.Nonce() - v.From, _ = tx.From() - v.To = tx.To() - v.Value = tx.Value() - v.Gas = tx.Gas() - v.GasPrice = tx.GasPrice() - v.Input = tx.Data() + v.Hash = newHexData(tx.Hash()) + v.Nonce = newHexNum(tx.Nonce()) + // v.BlockHash = + // v.BlockNumber = + // v.TxIndex = + from, _ := tx.From() + v.From = newHexData(from) + v.To = newHexData(tx.To()) + v.Value = newHexNum(tx.Value()) + v.Gas = newHexNum(tx.Gas()) + v.GasPrice = newHexNum(tx.GasPrice()) + v.Input = newHexData(tx.Data()) + return v +} + +func NewTransactionsRes(txs []*types.Transaction) []*TransactionRes { + v := make([]*TransactionRes, len(txs)) + for i, tx := range txs { + v[i] = NewTransactionRes(tx) + } return v } @@ -212,51 +123,28 @@ func NewTransactionRes(tx *types.Transaction) *TransactionRes { // } type LogRes struct { - Address common.Address `json:"address"` - Topics []common.Hash `json:"topics"` - Data []byte `json:"data"` - BlockNumber uint64 `json:"blockNumber"` - Hash common.Hash `json:"hash"` - LogIndex uint64 `json:"logIndex"` - BlockHash common.Hash `json:"blockHash"` - TransactionHash common.Hash `json:"transactionHash"` - TransactionIndex uint64 `json:"transactionIndex"` + Address *hexdata `json:"address"` + Topics []*hexdata `json:"topics"` + Data *hexdata `json:"data"` + BlockNumber *hexnum `json:"blockNumber"` + Hash *hexdata `json:"hash"` + LogIndex *hexnum `json:"logIndex"` + BlockHash *hexdata `json:"blockHash"` + TransactionHash *hexdata `json:"transactionHash"` + TransactionIndex *hexnum `json:"transactionIndex"` } func NewLogRes(log state.Log) LogRes { var l LogRes - l.Topics = make([]common.Hash, len(log.Topics())) - l.Address = log.Address() - l.Data = log.Data() - l.BlockNumber = log.Number() + l.Topics = make([]*hexdata, len(log.Topics())) for j, topic := range log.Topics() { - l.Topics[j] = topic - } - return l -} - -func (l *LogRes) MarshalJSON() ([]byte, error) { - var ext struct { - Address *hexdata `json:"address"` - Topics []*hexdata `json:"topics"` - Data *hexdata `json:"data"` - BlockNumber *hexnum `json:"blockNumber"` - Hash *hexdata `json:"hash"` - LogIndex *hexnum `json:"logIndex"` - BlockHash *hexdata `json:"blockHash"` - TransactionHash *hexdata `json:"transactionHash"` - TransactionIndex *hexnum `json:"transactionIndex"` + l.Topics[j] = newHexData(topic) } + l.Address = newHexData(log.Address()) + l.Data = newHexData(log.Data()) + l.BlockNumber = newHexNum(log.Number()) - ext.Address = newHexData(l.Address.Bytes()) - ext.Data = newHexData(l.Data) - ext.BlockNumber = newHexNum(l.BlockNumber) - ext.Topics = make([]*hexdata, len(l.Topics)) - for i, v := range l.Topics { - ext.Topics[i] = newHexData(v) - } - - return json.Marshal(ext) + return l } func NewLogsRes(logs state.Logs) (ls []LogRes) { |