aboutsummaryrefslogtreecommitdiffstats
path: root/core/types/gen_tx_json.go
blob: c27da67096eb4fb854ff368b24db6ddf4df6a176 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
// Code generated by github.com/fjl/gencodec. DO NOT EDIT.

package types

import (
    "encoding/json"
    "errors"
    "math/big"

    "github.com/ethereum/go-ethereum/common"
    "github.com/ethereum/go-ethereum/common/hexutil"
)

var _ = (*txdataMarshaling)(nil)

func (t txdata) MarshalJSON() ([]byte, error) {
    type txdata struct {
        AccountNonce hexutil.Uint64  `json:"nonce"    gencodec:"required"`
        Price        *hexutil.Big    `json:"gasPrice" gencodec:"required"`
        GasLimit     hexutil.Uint64  `json:"gas"      gencodec:"required"`
        Recipient    *common.Address `json:"to"       rlp:"nil"`
        Amount       *hexutil.Big    `json:"value"    gencodec:"required"`
        Payload      hexutil.Bytes   `json:"input"    gencodec:"required"`
        V            *hexutil.Big    `json:"v" gencodec:"required"`
        R            *hexutil.Big    `json:"r" gencodec:"required"`
        S            *hexutil.Big    `json:"s" gencodec:"required"`
        Hash         *common.Hash    `json:"hash" rlp:"-"`
    }
    var enc txdata
    enc.AccountNonce = hexutil.Uint64(t.AccountNonce)
    enc.Price = (*hexutil.Big)(t.Price)
    enc.GasLimit = hexutil.Uint64(t.GasLimit)
    enc.Recipient = t.Recipient
    enc.Amount = (*hexutil.Big)(t.Amount)
    enc.Payload = t.Payload
    enc.V = (*hexutil.Big)(t.V)
    enc.R = (*hexutil.Big)(t.R)
    enc.S = (*hexutil.Big)(t.S)
    enc.Hash = t.Hash
    return json.Marshal(&enc)
}

func (t *txdata) UnmarshalJSON(input []byte) error {
    type txdata struct {
        AccountNonce *hexutil.Uint64 `json:"nonce"    gencodec:"required"`
        Price        *hexutil.Big    `json:"gasPrice" gencodec:"required"`
        GasLimit     *hexutil.Uint64 `json:"gas"      gencodec:"required"`
        Recipient    *common.Address `json:"to"       rlp:"nil"`
        Amount       *hexutil.Big    `json:"value"    gencodec:"required"`
        Payload      *hexutil.Bytes  `json:"input"    gencodec:"required"`
        V            *hexutil.Big    `json:"v" gencodec:"required"`
        R            *hexutil.Big    `json:"r" gencodec:"required"`
        S            *hexutil.Big    `json:"s" gencodec:"required"`
        Hash         *common.Hash    `json:"hash" rlp:"-"`
    }
    var dec txdata
    if err := json.Unmarshal(input, &dec); err != nil {
        return err
    }
    if dec.AccountNonce == nil {
        return errors.New("missing required field 'nonce' for txdata")
    }
    t.AccountNonce = uint64(*dec.AccountNonce)
    if dec.Price == nil {
        return errors.New("missing required field 'gasPrice' for txdata")
    }
    t.Price = (*big.Int)(dec.Price)
    if dec.GasLimit == nil {
        return errors.New("missing required field 'gas' for txdata")
    }
    t.GasLimit = uint64(*dec.GasLimit)
    if dec.Recipient != nil {
        t.Recipient = dec.Recipient
    }
    if dec.Amount == nil {
        return errors.New("missing required field 'value' for txdata")
    }
    t.Amount = (*big.Int)(dec.Amount)
    if dec.Payload == nil {
        return errors.New("missing required field 'input' for txdata")
    }
    t.Payload = *dec.Payload
    if dec.V == nil {
        return errors.New("missing required field 'v' for txdata")
    }
    t.V = (*big.Int)(dec.V)
    if dec.R == nil {
        return errors.New("missing required field 'r' for txdata")
    }
    t.R = (*big.Int)(dec.R)
    if dec.S == nil {
        return errors.New("missing required field 's' for txdata")
    }
    t.S = (*big.Int)(dec.S)
    if dec.Hash != nil {
        t.Hash = dec.Hash
    }
    return nil
}