aboutsummaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorFelix Lange <fjl@twurst.com>2016-11-28 07:25:48 +0800
committerFelix Lange <fjl@twurst.com>2016-11-28 18:22:52 +0800
commit65e6319b1295908dc049c3e796763ffe96cd6c25 (patch)
tree6db2fa27454d4b0ad6fa12d4a754a71685f081e9 /core
parentec75953f509a94ccb20bd346a2413bfee1281072 (diff)
downloaddexon-65e6319b1295908dc049c3e796763ffe96cd6c25.tar.gz
dexon-65e6319b1295908dc049c3e796763ffe96cd6c25.tar.zst
dexon-65e6319b1295908dc049c3e796763ffe96cd6c25.zip
core/vm: use package hexutil for JSON handling
Diffstat (limited to 'core')
-rw-r--r--core/vm/log.go48
-rw-r--r--core/vm/log_test.go3
2 files changed, 23 insertions, 28 deletions
diff --git a/core/vm/log.go b/core/vm/log.go
index b292f5f43..06f941703 100644
--- a/core/vm/log.go
+++ b/core/vm/log.go
@@ -23,6 +23,7 @@ import (
"io"
"github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/common/hexutil"
"github.com/ethereum/go-ethereum/rlp"
)
@@ -47,12 +48,12 @@ type Log struct {
type jsonLog struct {
Address *common.Address `json:"address"`
Topics *[]common.Hash `json:"topics"`
- Data string `json:"data"`
- BlockNumber string `json:"blockNumber"`
- TxIndex string `json:"transactionIndex"`
+ Data *hexutil.Bytes `json:"data"`
+ BlockNumber *hexutil.Uint64 `json:"blockNumber"`
+ TxIndex *hexutil.Uint `json:"transactionIndex"`
TxHash *common.Hash `json:"transactionHash"`
BlockHash *common.Hash `json:"blockHash"`
- Index string `json:"logIndex"`
+ Index *hexutil.Uint `json:"logIndex"`
}
func NewLog(address common.Address, topics []common.Hash, data []byte, number uint64) *Log {
@@ -85,12 +86,12 @@ func (r *Log) MarshalJSON() ([]byte, error) {
return json.Marshal(&jsonLog{
Address: &r.Address,
Topics: &r.Topics,
- Data: fmt.Sprintf("0x%x", r.Data),
- BlockNumber: fmt.Sprintf("0x%x", r.BlockNumber),
- TxIndex: fmt.Sprintf("0x%x", r.TxIndex),
+ Data: (*hexutil.Bytes)(&r.Data),
+ BlockNumber: (*hexutil.Uint64)(&r.BlockNumber),
+ TxIndex: (*hexutil.Uint)(&r.TxIndex),
TxHash: &r.TxHash,
BlockHash: &r.BlockHash,
- Index: fmt.Sprintf("0x%x", r.Index),
+ Index: (*hexutil.Uint)(&r.Index),
})
}
@@ -100,29 +101,20 @@ func (r *Log) UnmarshalJSON(input []byte) error {
if err := json.Unmarshal(input, &dec); err != nil {
return err
}
- if dec.Address == nil || dec.Topics == nil || dec.Data == "" || dec.BlockNumber == "" ||
- dec.TxIndex == "" || dec.TxHash == nil || dec.BlockHash == nil || dec.Index == "" {
+ if dec.Address == nil || dec.Topics == nil || dec.Data == nil || dec.BlockNumber == nil ||
+ dec.TxIndex == nil || dec.TxHash == nil || dec.BlockHash == nil || dec.Index == nil {
return errMissingLogFields
}
- declog := Log{
- Address: *dec.Address,
- Topics: *dec.Topics,
- TxHash: *dec.TxHash,
- BlockHash: *dec.BlockHash,
+ *r = Log{
+ Address: *dec.Address,
+ Topics: *dec.Topics,
+ Data: *dec.Data,
+ BlockNumber: uint64(*dec.BlockNumber),
+ TxHash: *dec.TxHash,
+ TxIndex: uint(*dec.TxIndex),
+ BlockHash: *dec.BlockHash,
+ Index: uint(*dec.Index),
}
- if _, err := fmt.Sscanf(dec.Data, "0x%x", &declog.Data); err != nil {
- return fmt.Errorf("invalid hex log data")
- }
- if _, err := fmt.Sscanf(dec.BlockNumber, "0x%x", &declog.BlockNumber); err != nil {
- return fmt.Errorf("invalid hex log block number")
- }
- if _, err := fmt.Sscanf(dec.TxIndex, "0x%x", &declog.TxIndex); err != nil {
- return fmt.Errorf("invalid hex log tx index")
- }
- if _, err := fmt.Sscanf(dec.Index, "0x%x", &declog.Index); err != nil {
- return fmt.Errorf("invalid hex log index")
- }
- *r = declog
return nil
}
diff --git a/core/vm/log_test.go b/core/vm/log_test.go
index 775016f9c..4d3189558 100644
--- a/core/vm/log_test.go
+++ b/core/vm/log_test.go
@@ -28,6 +28,9 @@ var unmarshalLogTests = map[string]struct {
"ok": {
input: `{"address":"0xecf8f87f810ecf450940c9f60066b4a7a501d6a7","blockHash":"0x656c34545f90a730a19008c0e7a7cd4fb3895064b48d6d69761bd5abad681056","blockNumber":"0x1ecfa4","data":"0x000000000000000000000000000000000000000000000001a055690d9db80000","logIndex":"0x2","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x00000000000000000000000080b2c9d7cbbf30a1b0fc8983c647d754c6525615","0x000000000000000000000000f9dff387dcb5cc4cca5b91adb07a95f54e9f1bb6"],"transactionHash":"0x3b198bfd5d2907285af009e9ae84a0ecd63677110d89d7e030251acb87f6487e","transactionIndex":"0x3"}`,
},
+ "empty data": {
+ input: `{"address":"0xecf8f87f810ecf450940c9f60066b4a7a501d6a7","blockHash":"0x656c34545f90a730a19008c0e7a7cd4fb3895064b48d6d69761bd5abad681056","blockNumber":"0x1ecfa4","data":"0x","logIndex":"0x2","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x00000000000000000000000080b2c9d7cbbf30a1b0fc8983c647d754c6525615","0x000000000000000000000000f9dff387dcb5cc4cca5b91adb07a95f54e9f1bb6"],"transactionHash":"0x3b198bfd5d2907285af009e9ae84a0ecd63677110d89d7e030251acb87f6487e","transactionIndex":"0x3"}`,
+ },
"missing data": {
input: `{"address":"0xecf8f87f810ecf450940c9f60066b4a7a501d6a7","blockHash":"0x656c34545f90a730a19008c0e7a7cd4fb3895064b48d6d69761bd5abad681056","blockNumber":"0x1ecfa4","logIndex":"0x2","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x00000000000000000000000080b2c9d7cbbf30a1b0fc8983c647d754c6525615","0x000000000000000000000000f9dff387dcb5cc4cca5b91adb07a95f54e9f1bb6"],"transactionHash":"0x3b198bfd5d2907285af009e9ae84a0ecd63677110d89d7e030251acb87f6487e","transactionIndex":"0x3"}`,
wantError: errMissingLogFields,