ethtypes: Serialize EthFilterID/EthSubscriptionID correctly
This commit is contained in:
parent
965b1cf03c
commit
9701b11641
Binary file not shown.
Binary file not shown.
@ -363,6 +363,18 @@ func (h *EthHash) UnmarshalJSON(b []byte) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (h EthHash) String() string {
|
||||||
|
return "0x" + hex.EncodeToString(h[:])
|
||||||
|
}
|
||||||
|
|
||||||
|
// Should ONLY be used for blocks and Filecoin messages. Eth transactions expect a different hashing scheme.
|
||||||
|
func (h EthHash) ToCid() cid.Cid {
|
||||||
|
// err is always nil
|
||||||
|
mh, _ := multihash.EncodeName(h[:], "blake2b-256")
|
||||||
|
|
||||||
|
return cid.NewCidV1(cid.DagCBOR, mh)
|
||||||
|
}
|
||||||
|
|
||||||
func decodeHexString(s string, expectedLen int) ([]byte, error) {
|
func decodeHexString(s string, expectedLen int) ([]byte, error) {
|
||||||
s = handleHexStringPrefix(s)
|
s = handleHexStringPrefix(s)
|
||||||
if len(s) != expectedLen*2 {
|
if len(s) != expectedLen*2 {
|
||||||
@ -420,18 +432,6 @@ func EthHashFromTxBytes(b []byte) EthHash {
|
|||||||
return ethHash
|
return ethHash
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h EthHash) String() string {
|
|
||||||
return "0x" + hex.EncodeToString(h[:])
|
|
||||||
}
|
|
||||||
|
|
||||||
// Should ONLY be used for blocks and Filecoin messages. Eth transactions expect a different hashing scheme.
|
|
||||||
func (h EthHash) ToCid() cid.Cid {
|
|
||||||
// err is always nil
|
|
||||||
mh, _ := multihash.EncodeName(h[:], "blake2b-256")
|
|
||||||
|
|
||||||
return cid.NewCidV1(cid.DagCBOR, mh)
|
|
||||||
}
|
|
||||||
|
|
||||||
type EthFeeHistory struct {
|
type EthFeeHistory struct {
|
||||||
OldestBlock uint64 `json:"oldestBlock"`
|
OldestBlock uint64 `json:"oldestBlock"`
|
||||||
BaseFeePerGas []EthBigInt `json:"baseFeePerGas"`
|
BaseFeePerGas []EthBigInt `json:"baseFeePerGas"`
|
||||||
@ -441,9 +441,33 @@ type EthFeeHistory struct {
|
|||||||
|
|
||||||
type EthFilterID EthHash
|
type EthFilterID EthHash
|
||||||
|
|
||||||
|
func (h EthFilterID) MarshalJSON() ([]byte, error) {
|
||||||
|
return (EthHash)(h).MarshalJSON()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *EthFilterID) UnmarshalJSON(b []byte) error {
|
||||||
|
return (*EthHash)(h).UnmarshalJSON(b)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h EthFilterID) String() string {
|
||||||
|
return (EthHash)(h).String()
|
||||||
|
}
|
||||||
|
|
||||||
// An opaque identifier generated by the Lotus node to refer to an active subscription.
|
// An opaque identifier generated by the Lotus node to refer to an active subscription.
|
||||||
type EthSubscriptionID EthHash
|
type EthSubscriptionID EthHash
|
||||||
|
|
||||||
|
func (h EthSubscriptionID) MarshalJSON() ([]byte, error) {
|
||||||
|
return (EthHash)(h).MarshalJSON()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *EthSubscriptionID) UnmarshalJSON(b []byte) error {
|
||||||
|
return (*EthHash)(h).UnmarshalJSON(b)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h EthSubscriptionID) String() string {
|
||||||
|
return (EthHash)(h).String()
|
||||||
|
}
|
||||||
|
|
||||||
type EthFilterSpec struct {
|
type EthFilterSpec struct {
|
||||||
// Interpreted as an epoch or one of "latest" for last mined block, "earliest" for first,
|
// Interpreted as an epoch or one of "latest" for last mined block, "earliest" for first,
|
||||||
// "pending" for not yet committed messages.
|
// "pending" for not yet committed messages.
|
||||||
|
@ -93,6 +93,48 @@ func TestEthHash(t *testing.T) {
|
|||||||
h1, err := EthHashFromCid(c)
|
h1, err := EthHashFromCid(c)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
require.Equal(t, h, h1)
|
require.Equal(t, h, h1)
|
||||||
|
|
||||||
|
jm, err := json.Marshal(h)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, hash, string(jm))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestEthFilterID(t *testing.T) {
|
||||||
|
testcases := []string{
|
||||||
|
`"0x013dbb9442ca9667baccc6230fcd5c1c4b2d4d2870f4bd20681d4d47cfd15184"`,
|
||||||
|
`"0xab8653edf9f51785664a643b47605a7ba3d917b5339a0724e7642c114d0e4738"`,
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, hash := range testcases {
|
||||||
|
var h EthFilterID
|
||||||
|
err := h.UnmarshalJSON([]byte(hash))
|
||||||
|
|
||||||
|
require.Nil(t, err)
|
||||||
|
require.Equal(t, h.String(), strings.Replace(hash, `"`, "", -1))
|
||||||
|
|
||||||
|
jm, err := json.Marshal(h)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, hash, string(jm))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestEthSubscriptionID(t *testing.T) {
|
||||||
|
testcases := []string{
|
||||||
|
`"0x013dbb9442ca9667baccc6230fcd5c1c4b2d4d2870f4bd20681d4d47cfd15184"`,
|
||||||
|
`"0xab8653edf9f51785664a643b47605a7ba3d917b5339a0724e7642c114d0e4738"`,
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, hash := range testcases {
|
||||||
|
var h EthSubscriptionID
|
||||||
|
err := h.UnmarshalJSON([]byte(hash))
|
||||||
|
|
||||||
|
require.Nil(t, err)
|
||||||
|
require.Equal(t, h.String(), strings.Replace(hash, `"`, "", -1))
|
||||||
|
|
||||||
|
jm, err := json.Marshal(h)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, hash, string(jm))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2520,40 +2520,7 @@ Perms: write
|
|||||||
Inputs:
|
Inputs:
|
||||||
```json
|
```json
|
||||||
[
|
[
|
||||||
[
|
"0x37690cfec6c1bf4c3b9288c7a5d783e98731e90b0a4c177c2a374c7a9427355e"
|
||||||
55,
|
|
||||||
105,
|
|
||||||
12,
|
|
||||||
254,
|
|
||||||
198,
|
|
||||||
193,
|
|
||||||
191,
|
|
||||||
76,
|
|
||||||
59,
|
|
||||||
146,
|
|
||||||
136,
|
|
||||||
199,
|
|
||||||
165,
|
|
||||||
215,
|
|
||||||
131,
|
|
||||||
233,
|
|
||||||
135,
|
|
||||||
49,
|
|
||||||
233,
|
|
||||||
11,
|
|
||||||
10,
|
|
||||||
76,
|
|
||||||
23,
|
|
||||||
124,
|
|
||||||
42,
|
|
||||||
55,
|
|
||||||
76,
|
|
||||||
122,
|
|
||||||
148,
|
|
||||||
39,
|
|
||||||
53,
|
|
||||||
94
|
|
||||||
]
|
|
||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -2574,40 +2541,7 @@ Perms: write
|
|||||||
Inputs:
|
Inputs:
|
||||||
```json
|
```json
|
||||||
[
|
[
|
||||||
[
|
"0x37690cfec6c1bf4c3b9288c7a5d783e98731e90b0a4c177c2a374c7a9427355e"
|
||||||
55,
|
|
||||||
105,
|
|
||||||
12,
|
|
||||||
254,
|
|
||||||
198,
|
|
||||||
193,
|
|
||||||
191,
|
|
||||||
76,
|
|
||||||
59,
|
|
||||||
146,
|
|
||||||
136,
|
|
||||||
199,
|
|
||||||
165,
|
|
||||||
215,
|
|
||||||
131,
|
|
||||||
233,
|
|
||||||
135,
|
|
||||||
49,
|
|
||||||
233,
|
|
||||||
11,
|
|
||||||
10,
|
|
||||||
76,
|
|
||||||
23,
|
|
||||||
124,
|
|
||||||
42,
|
|
||||||
55,
|
|
||||||
76,
|
|
||||||
122,
|
|
||||||
148,
|
|
||||||
39,
|
|
||||||
53,
|
|
||||||
94
|
|
||||||
]
|
|
||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -2881,43 +2815,7 @@ Perms: write
|
|||||||
|
|
||||||
Inputs: `null`
|
Inputs: `null`
|
||||||
|
|
||||||
Response:
|
Response: `"0x37690cfec6c1bf4c3b9288c7a5d783e98731e90b0a4c177c2a374c7a9427355e"`
|
||||||
```json
|
|
||||||
[
|
|
||||||
55,
|
|
||||||
105,
|
|
||||||
12,
|
|
||||||
254,
|
|
||||||
198,
|
|
||||||
193,
|
|
||||||
191,
|
|
||||||
76,
|
|
||||||
59,
|
|
||||||
146,
|
|
||||||
136,
|
|
||||||
199,
|
|
||||||
165,
|
|
||||||
215,
|
|
||||||
131,
|
|
||||||
233,
|
|
||||||
135,
|
|
||||||
49,
|
|
||||||
233,
|
|
||||||
11,
|
|
||||||
10,
|
|
||||||
76,
|
|
||||||
23,
|
|
||||||
124,
|
|
||||||
42,
|
|
||||||
55,
|
|
||||||
76,
|
|
||||||
122,
|
|
||||||
148,
|
|
||||||
39,
|
|
||||||
53,
|
|
||||||
94
|
|
||||||
]
|
|
||||||
```
|
|
||||||
|
|
||||||
### EthNewFilter
|
### EthNewFilter
|
||||||
Installs a persistent filter based on given filter spec.
|
Installs a persistent filter based on given filter spec.
|
||||||
@ -2938,43 +2836,7 @@ Inputs:
|
|||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
Response:
|
Response: `"0x37690cfec6c1bf4c3b9288c7a5d783e98731e90b0a4c177c2a374c7a9427355e"`
|
||||||
```json
|
|
||||||
[
|
|
||||||
55,
|
|
||||||
105,
|
|
||||||
12,
|
|
||||||
254,
|
|
||||||
198,
|
|
||||||
193,
|
|
||||||
191,
|
|
||||||
76,
|
|
||||||
59,
|
|
||||||
146,
|
|
||||||
136,
|
|
||||||
199,
|
|
||||||
165,
|
|
||||||
215,
|
|
||||||
131,
|
|
||||||
233,
|
|
||||||
135,
|
|
||||||
49,
|
|
||||||
233,
|
|
||||||
11,
|
|
||||||
10,
|
|
||||||
76,
|
|
||||||
23,
|
|
||||||
124,
|
|
||||||
42,
|
|
||||||
55,
|
|
||||||
76,
|
|
||||||
122,
|
|
||||||
148,
|
|
||||||
39,
|
|
||||||
53,
|
|
||||||
94
|
|
||||||
]
|
|
||||||
```
|
|
||||||
|
|
||||||
### EthNewPendingTransactionFilter
|
### EthNewPendingTransactionFilter
|
||||||
Installs a persistent filter to notify when new messages arrive in the message pool.
|
Installs a persistent filter to notify when new messages arrive in the message pool.
|
||||||
@ -2984,43 +2846,7 @@ Perms: write
|
|||||||
|
|
||||||
Inputs: `null`
|
Inputs: `null`
|
||||||
|
|
||||||
Response:
|
Response: `"0x37690cfec6c1bf4c3b9288c7a5d783e98731e90b0a4c177c2a374c7a9427355e"`
|
||||||
```json
|
|
||||||
[
|
|
||||||
55,
|
|
||||||
105,
|
|
||||||
12,
|
|
||||||
254,
|
|
||||||
198,
|
|
||||||
193,
|
|
||||||
191,
|
|
||||||
76,
|
|
||||||
59,
|
|
||||||
146,
|
|
||||||
136,
|
|
||||||
199,
|
|
||||||
165,
|
|
||||||
215,
|
|
||||||
131,
|
|
||||||
233,
|
|
||||||
135,
|
|
||||||
49,
|
|
||||||
233,
|
|
||||||
11,
|
|
||||||
10,
|
|
||||||
76,
|
|
||||||
23,
|
|
||||||
124,
|
|
||||||
42,
|
|
||||||
55,
|
|
||||||
76,
|
|
||||||
122,
|
|
||||||
148,
|
|
||||||
39,
|
|
||||||
53,
|
|
||||||
94
|
|
||||||
]
|
|
||||||
```
|
|
||||||
|
|
||||||
### EthProtocolVersion
|
### EthProtocolVersion
|
||||||
|
|
||||||
@ -3071,43 +2897,7 @@ Inputs:
|
|||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
Response:
|
Response: `"0x37690cfec6c1bf4c3b9288c7a5d783e98731e90b0a4c177c2a374c7a9427355e"`
|
||||||
```json
|
|
||||||
[
|
|
||||||
55,
|
|
||||||
105,
|
|
||||||
12,
|
|
||||||
254,
|
|
||||||
198,
|
|
||||||
193,
|
|
||||||
191,
|
|
||||||
76,
|
|
||||||
59,
|
|
||||||
146,
|
|
||||||
136,
|
|
||||||
199,
|
|
||||||
165,
|
|
||||||
215,
|
|
||||||
131,
|
|
||||||
233,
|
|
||||||
135,
|
|
||||||
49,
|
|
||||||
233,
|
|
||||||
11,
|
|
||||||
10,
|
|
||||||
76,
|
|
||||||
23,
|
|
||||||
124,
|
|
||||||
42,
|
|
||||||
55,
|
|
||||||
76,
|
|
||||||
122,
|
|
||||||
148,
|
|
||||||
39,
|
|
||||||
53,
|
|
||||||
94
|
|
||||||
]
|
|
||||||
```
|
|
||||||
|
|
||||||
### EthUninstallFilter
|
### EthUninstallFilter
|
||||||
Uninstalls a filter with given id.
|
Uninstalls a filter with given id.
|
||||||
@ -3118,40 +2908,7 @@ Perms: write
|
|||||||
Inputs:
|
Inputs:
|
||||||
```json
|
```json
|
||||||
[
|
[
|
||||||
[
|
"0x37690cfec6c1bf4c3b9288c7a5d783e98731e90b0a4c177c2a374c7a9427355e"
|
||||||
55,
|
|
||||||
105,
|
|
||||||
12,
|
|
||||||
254,
|
|
||||||
198,
|
|
||||||
193,
|
|
||||||
191,
|
|
||||||
76,
|
|
||||||
59,
|
|
||||||
146,
|
|
||||||
136,
|
|
||||||
199,
|
|
||||||
165,
|
|
||||||
215,
|
|
||||||
131,
|
|
||||||
233,
|
|
||||||
135,
|
|
||||||
49,
|
|
||||||
233,
|
|
||||||
11,
|
|
||||||
10,
|
|
||||||
76,
|
|
||||||
23,
|
|
||||||
124,
|
|
||||||
42,
|
|
||||||
55,
|
|
||||||
76,
|
|
||||||
122,
|
|
||||||
148,
|
|
||||||
39,
|
|
||||||
53,
|
|
||||||
94
|
|
||||||
]
|
|
||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -3166,40 +2923,7 @@ Perms: write
|
|||||||
Inputs:
|
Inputs:
|
||||||
```json
|
```json
|
||||||
[
|
[
|
||||||
[
|
"0x37690cfec6c1bf4c3b9288c7a5d783e98731e90b0a4c177c2a374c7a9427355e"
|
||||||
55,
|
|
||||||
105,
|
|
||||||
12,
|
|
||||||
254,
|
|
||||||
198,
|
|
||||||
193,
|
|
||||||
191,
|
|
||||||
76,
|
|
||||||
59,
|
|
||||||
146,
|
|
||||||
136,
|
|
||||||
199,
|
|
||||||
165,
|
|
||||||
215,
|
|
||||||
131,
|
|
||||||
233,
|
|
||||||
135,
|
|
||||||
49,
|
|
||||||
233,
|
|
||||||
11,
|
|
||||||
10,
|
|
||||||
76,
|
|
||||||
23,
|
|
||||||
124,
|
|
||||||
42,
|
|
||||||
55,
|
|
||||||
76,
|
|
||||||
122,
|
|
||||||
148,
|
|
||||||
39,
|
|
||||||
53,
|
|
||||||
94
|
|
||||||
]
|
|
||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user