Skip to content

Commit ef9012a

Browse files
authored
Merge pull request ethereum#148 from fearlessfe/types
feat: add test for HistoricalSummaries types
2 parents 17308df + e7054da commit ef9012a

8 files changed

+104
-28
lines changed

portalnetwork/beacon/test_utils.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ func GetHistorySummariesWithProof() (HistoricalSummariesWithProof, error) {
181181
return HistoricalSummariesWithProof{
182182
EPOCH: common.Epoch(uint64(beaconState.Slot) / 32),
183183
HistoricalSummaries: beaconState.HistoricalSummaries,
184-
Proof: &HistoricalSummariesProof{
184+
Proof: HistoricalSummariesProof{
185185
Proof: summariesProof,
186186
},
187187
}, nil
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Beacon state is sourced from consensus-spec-tests: https://github.com/ethereum/consensus-spec-tests/blob/7ffca8d9ec30d937bef52097be6715419e93a4ba/tests/mainnet/deneb/ssz_static/BeaconState/ssz_random/case_0/value.yaml
2+
content_key: "0x14ae7e346485874006"
3+
# The SSZ content is prefixed with the mainnet forkdigest
4+
content_value: "0x6a95a1a9ae7e346485874006ac0000006f4ea1cbdfedfaf60000000000000000000000000000000000000000000000008fa1cfc27730c1942e4919e2a8bd2668e5ba02ee7769599a931db20dfeb7120cdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d719cc5feb29e02a89a7429376ff532621801239f408e7f7e63049a771d5b6473dc5a3afe60235feefc3e97234390b780e1996cbee7439111ca287fa001a9e1cb7537c8d6fb365cbcb3c68b958881578ef49bb8b51440c6b934e8e9dc8366c9f4136bba5413b4948f8015a1abe9e3df190a0d0ba524facfa9340f310a5af718d93311dd263279526c4f8575a52cc6eace34090dbd6d534ab44fad8351757dea160a993f8d25ef03a1096a86bcc10371a3f0b83d1f322532723202f021e1b95f2d5060a6e9eb9c8d35d5c9644fea283bfd553fddf6613069050a4c1ac38047df75aa3fa064c5de29b76edf1cde4fde3ac58d203d7ba87165cbb542fb7a7967565929"
5+
beacon_state_root: "0xf596255a2b920a0387e770320ae4533a221155989f0e8f0a9091b19fef97d279"
6+
historical_summaries_root: "0x696023d8205c3a8ff5d5a880bd6e343e2f1fd95b4c8d5d85d693b54f71b49265"
7+
historical_summaries_state_proof:
8+
- "0x6f4ea1cbdfedfaf6000000000000000000000000000000000000000000000000"
9+
- "0x8fa1cfc27730c1942e4919e2a8bd2668e5ba02ee7769599a931db20dfeb7120c"
10+
- "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71"
11+
- "0x9cc5feb29e02a89a7429376ff532621801239f408e7f7e63049a771d5b6473dc"
12+
- "0x5a3afe60235feefc3e97234390b780e1996cbee7439111ca287fa001a9e1cb75"
13+
epoch: 450508969718611630

portalnetwork/beacon/testdata/types/light_client_bootstrap.json

Lines changed: 6 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"6718463": {
3+
"content_key": "0x12a083660000000000",
4+
"content_value": "0xbba4da9670010000b30400001d34030000000000000000000000000000000000000000000000000000000000a4f8b2415bbca66d73597343afead504bd8282523df27153543b2de8973b7474ace652bb73991c3b63f7185a17333c8aea619a69b69863a5d79810dad6c363d3df460765de20d3c8f56bcd9490f15e2d9e122b3f6173cea76f6d0d16074ce0f0ecde5df1b81f36c08e91ce803c25add312bfd8cb759a81b7cfd158d724959cf22e83908e043f77bdc5992806617ef1fa0a4f1985d9aa1b67371d3580be8c2c64ffffffffffffffffffffffffffffbfffff7fffffffffffffffffffffffffffffffffffffffffffffffffffdefffffffffffffffffffeffffffffffffffffefffa480f81d481c5aa8439f8c65f86c69d3b1570cfd95b61300f7e29c5b0954c0c0fb080bba0e8ba60dead40c45355332ed06982fcaf53ad1ad4a7e6e39091ee7e5602d4a30b6d46e12047c31451f246bf43c4a3fbdb1d1de2f2180a776ef71fc3d0084660000000000ff83660000000000e5f4020000000000007b8211614b9c5331a1de2691ad7cdde1ca113b4e51b9f2757a4b502833f9234a06eb807d82b9175dd085748ade76aaa86fb4eca48bc8deb01b9c56a267a896d98469820ef7d34f8610e134c6eaf8d379e83cf6c3ab0663fba828edab344dc5f40000008e2a532cfdfdce86b27b26f611f1df0e2b00a54d18c6980e69ad28a4b70bf480336488033fe5f3ef4ccc12af07b9370b92e553e35ecb4a337a1b1c0e4afe1e0edb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71b4c4e01065cd22a0d2f27a544ff8315b9e28f6270a63f543831778f32648ac3a15ecbea44f91b9b4a28ec8308a30a4b6252f554a2088bb1c73ea01013ba4963dfeebabe6b0418ec13b30aadf129f5dcdd4f70ceaa56499df0b3ba9d8fe6ca410132a29cf387371294137003adb139ce9f06b6f7dbf32ee01da91016a485a8aab5669168efc3d3a200b2ee0f25d937a413dfc38e44e211f02432a01a83088e700808c302002139aad8496010300cd220b14288429d8a6049945000a3b60f00f00109019341a0129a08906314848650817002cb98894a328084521a87e6d0a64e8080004ac0805000800e29808294016508a2004001304002a02320c4705501ac008a62848701040012a08e5c8b69010f1009f80408894857053e1b940e2c9004912860e26112080610d002098242000ca001420209a42c141d0c86087509344ced8a32e0204410a0196025a12106104e20008ad4449d5043208090008810201820209108607a0fa1004aa323410050222867024e0d172a82821b02c00020513152006484c800b10f0420802c0244d0850288c6541dc34cabc32f5d355aef4017425cab95c1de0474d483623e23c9bf13d9a18f1597e930b010000000080c3c901000000000ca88800000000004b6094640000000038020000ab9bf66d04000000000000000000000000000000000000000000000000000000797be971185ac699fa7288c87457c3611b443fb98483fddf282dfa7c5b4b27058eddbcd8b5de9b747c57c827ceba820d19e987ff6740eed38ccbc947696d71e3e2c3b96c9200d7d5c66fb4e8458067d6420e64647682ca2f0798ae817d2bc19468747470733a2f2f6574682d6275696c6465722e636f6da08366000000000037b10700000000002a7315c8ddfc25dc2266a6b221cb8f9fdf641970ab1f65a2754df4e14c432b9c446c604131913bed45976c4a8ea27df843a72d622f80ef15da622f0d56ec1ffe3021190177b0405c4fa1a0311a493c4dd095f24d386be6a03f5838a6b1008665f4000000f5c98fc152bf40e1ce216c8839b8ddd42ea5b355f0b5c700fc9b2cb7c802e1c8336488033fe5f3ef4ccc12af07b9370b92e553e35ecb4a337a1b1c0e4afe1e0edb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71a533e05d648cb9635382f38b778dc3c76b18e4eab2d017fdb24c1c0e32d2991707a45ce3f26e443dafa697a76bf24122c9b19b57eebe798668dbd1a0da7c900795222290dd7278aa3ddd389cc1e1d165cc4bafe5c658153cdef5850f97c4d4fb6706b82310414a00fe7dc34b3043e0c7a8a24e810e3cec9de3e1dd7ce06bc191efd2273a357da4436fc4bf82069f6cb87d3d605aeda1336ac513f358b4296b8da51232896ad271063d93404eaa6b80960fa2d4b41d74a544eef94731f0b83ba2701e33b49e3191098c3369bc4658d82f536cb9d38285c51c7844292ced06dd2e8148f0bcd585dc1104e64aa930045e83d828ab436a0e587637e5ef83044d1c2918da284d7072847132885d443640979907485847368e32501345b0dc24c904c06732cc17d944b26181b0c05c6461bccbe4f7b2180a282b6871aa6472fa36cdc49ec50cf69d3eee4b26fe02bf48f39efb549d3963d19e4112c7250c580543516204ff1b0675680cfea02ac09f0b23d6e28c14b08421b3a10a9788442457d732b120c5c466c54ad938dedd3cd3701d9b32fa15dc8db3d6b1ea5d8495732477a72b34efcaf8c349aa40d8e1f21f226ca11182cff00921930b010000000080c3c901000000009104e90000000000d75b9464000000003802000076ab1c8604000000000000000000000000000000000000000000000000000000844f7a7e7585362114fc88a70654146215ab4eaad65ad54b64975840b78d365e8b75e78616a92294e747589c3ee4a845c2962e1cf6cd7fe8bfbd09439e5e6d5e4d4efdf181473803e734d97891388e1b50628658ac818599cf2cb069c8e6b38b6265617665726275696c642e6f7267"
5+
}
6+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"6718463": {
3+
"content_key": "0x130084660000000000",
4+
"content_value": "0xbba4da96ac000000ffffffffffffffffffffffffffffbfffff7fffffffffffffffffffffffffffffffffffffffffffffffffffdefffffffffffffffffffeffffffffffffffffefffa480f81d481c5aa8439f8c65f86c69d3b1570cfd95b61300f7e29c5b0954c0c0fb080bba0e8ba60dead40c45355332ed06982fcaf53ad1ad4a7e6e39091ee7e5602d4a30b6d46e12047c31451f246bf43c4a3fbdb1d1de2f2180a776ef71fc3d0084660000000000ff83660000000000e5f4020000000000007b8211614b9c5331a1de2691ad7cdde1ca113b4e51b9f2757a4b502833f9234a06eb807d82b9175dd085748ade76aaa86fb4eca48bc8deb01b9c56a267a896d98469820ef7d34f8610e134c6eaf8d379e83cf6c3ab0663fba828edab344dc5f40000008e2a532cfdfdce86b27b26f611f1df0e2b00a54d18c6980e69ad28a4b70bf480336488033fe5f3ef4ccc12af07b9370b92e553e35ecb4a337a1b1c0e4afe1e0edb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71b4c4e01065cd22a0d2f27a544ff8315b9e28f6270a63f543831778f32648ac3a15ecbea44f91b9b4a28ec8308a30a4b6252f554a2088bb1c73ea01013ba4963dfeebabe6b0418ec13b30aadf129f5dcdd4f70ceaa56499df0b3ba9d8fe6ca410132a29cf387371294137003adb139ce9f06b6f7dbf32ee01da91016a485a8aab5669168efc3d3a200b2ee0f25d937a413dfc38e44e211f02432a01a83088e700808c302002139aad8496010300cd220b14288429d8a6049945000a3b60f00f00109019341a0129a08906314848650817002cb98894a328084521a87e6d0a64e8080004ac0805000800e29808294016508a2004001304002a02320c4705501ac008a62848701040012a08e5c8b69010f1009f80408894857053e1b940e2c9004912860e26112080610d002098242000ca001420209a42c141d0c86087509344ced8a32e0204410a0196025a12106104e20008ad4449d5043208090008810201820209108607a0fa1004aa323410050222867024e0d172a82821b02c00020513152006484c800b10f0420802c0244d0850288c6541dc34cabc32f5d355aef4017425cab95c1de0474d483623e23c9bf13d9a18f1597e930b010000000080c3c901000000000ca88800000000004b6094640000000038020000ab9bf66d04000000000000000000000000000000000000000000000000000000797be971185ac699fa7288c87457c3611b443fb98483fddf282dfa7c5b4b27058eddbcd8b5de9b747c57c827ceba820d19e987ff6740eed38ccbc947696d71e3e2c3b96c9200d7d5c66fb4e8458067d6420e64647682ca2f0798ae817d2bc19468747470733a2f2f6574682d6275696c6465722e636f6d"
5+
}
6+
}

portalnetwork/beacon/testdata/types/light_client_updates_by_range.json

Lines changed: 6 additions & 0 deletions
Large diffs are not rendered by default.

portalnetwork/beacon/types.go

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -329,32 +329,30 @@ func (hsp *HistoricalSummariesProof) HashTreeRoot(hFn tree.HashFn) common.Root {
329329
}, 5)
330330
}
331331

332-
// TODO: Add tests for HistoricalSummariesWithProof
333-
334332
type HistoricalSummariesWithProof struct {
335333
EPOCH common.Epoch
336334
HistoricalSummaries capella.HistoricalSummaries
337-
Proof *HistoricalSummariesProof
335+
Proof HistoricalSummariesProof
338336
}
339337

340-
func (hswp HistoricalSummariesWithProof) Deserialize(spec *common.Spec, dr *codec.DecodingReader) error {
341-
return dr.Container(&hswp.EPOCH, spec.Wrap(&hswp.HistoricalSummaries), hswp.Proof)
338+
func (hswp *HistoricalSummariesWithProof) Deserialize(spec *common.Spec, dr *codec.DecodingReader) error {
339+
return dr.Container(&hswp.EPOCH, spec.Wrap(&hswp.HistoricalSummaries), &hswp.Proof)
342340
}
343341

344-
func (hswp HistoricalSummariesWithProof) Serialize(spec *common.Spec, w *codec.EncodingWriter) error {
345-
return w.Container(hswp.EPOCH, spec.Wrap(&hswp.HistoricalSummaries), hswp.Proof)
342+
func (hswp *HistoricalSummariesWithProof) Serialize(spec *common.Spec, w *codec.EncodingWriter) error {
343+
return w.Container(hswp.EPOCH, spec.Wrap(&hswp.HistoricalSummaries), &hswp.Proof)
346344
}
347345

348-
func (hswp HistoricalSummariesWithProof) ByteLength(spec *common.Spec) uint64 {
349-
return codec.ContainerLength(hswp.EPOCH, spec.Wrap(&hswp.HistoricalSummaries), hswp.Proof)
346+
func (hswp *HistoricalSummariesWithProof) ByteLength(spec *common.Spec) uint64 {
347+
return codec.ContainerLength(hswp.EPOCH, spec.Wrap(&hswp.HistoricalSummaries), &hswp.Proof)
350348
}
351349

352-
func (hswp HistoricalSummariesWithProof) FixedLength(_ *common.Spec) uint64 {
350+
func (hswp *HistoricalSummariesWithProof) FixedLength(_ *common.Spec) uint64 {
353351
return 0
354352
}
355353

356-
func (hswp HistoricalSummariesWithProof) HashTreeRoot(spec *common.Spec, hFn tree.HashFn) common.Root {
357-
return hFn.HashTreeRoot(hswp.EPOCH, spec.Wrap(&hswp.HistoricalSummaries), hswp.Proof)
354+
func (hswp *HistoricalSummariesWithProof) HashTreeRoot(spec *common.Spec, hFn tree.HashFn) common.Root {
355+
return hFn.HashTreeRoot(hswp.EPOCH, spec.Wrap(&hswp.HistoricalSummaries), &hswp.Proof)
358356
}
359357

360358
type ForkedHistoricalSummariesWithProof struct {
@@ -392,5 +390,5 @@ func (fhswp ForkedHistoricalSummariesWithProof) ByteLength(spec *common.Spec) ui
392390
}
393391

394392
func (fhswp ForkedHistoricalSummariesWithProof) HashTreeRoot(spec *common.Spec, h tree.HashFn) common.Root {
395-
return h.HashTreeRoot(fhswp.ForkDigest, spec.Wrap(common.SpecObj(fhswp.HistoricalSummariesWithProof)))
393+
return h.HashTreeRoot(fhswp.ForkDigest, spec.Wrap(common.SpecObj(&fhswp.HistoricalSummariesWithProof)))
396394
}

portalnetwork/beacon/types_test.go

Lines changed: 55 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,17 @@ import (
1212
"github.com/protolambda/zrnt/eth2/configs"
1313
"github.com/protolambda/ztyp/codec"
1414
"github.com/stretchr/testify/assert"
15+
"github.com/stretchr/testify/require"
16+
"gopkg.in/yaml.v3"
1517
)
1618

1719
func TestForkedLightClientBootstrap(t *testing.T) {
18-
filePath := "testdata/light_client_bootstrap.json"
19-
20-
f, _ := os.Open(filePath)
21-
jsonStr, _ := io.ReadAll(f)
20+
filePath := "testdata/types/light_client_bootstrap.json"
2221

22+
f, err := os.Open(filePath)
23+
require.NoError(t, err)
24+
jsonStr, err := io.ReadAll(f)
25+
require.NoError(t, err)
2326
var result map[string]interface{}
2427
_ = json.Unmarshal(jsonStr, &result)
2528

@@ -39,11 +42,12 @@ func TestForkedLightClientBootstrap(t *testing.T) {
3942
}
4043

4144
func TestLightClientUpdateRange(t *testing.T) {
42-
filePath := "testdata/light_client_updates_by_range.json"
43-
44-
f, _ := os.Open(filePath)
45-
jsonStr, _ := io.ReadAll(f)
45+
filePath := "testdata/types/light_client_updates_by_range.json"
4646

47+
f, err := os.Open(filePath)
48+
require.NoError(t, err)
49+
jsonStr, err := io.ReadAll(f)
50+
require.NoError(t, err)
4751
var result map[string]interface{}
4852
_ = json.Unmarshal(jsonStr, &result)
4953

@@ -64,10 +68,12 @@ func TestLightClientUpdateRange(t *testing.T) {
6468
}
6569

6670
func TestForkedLightClientOptimisticUpdate(t *testing.T) {
67-
filePath := "testdata/light_client_optimistic_update.json"
71+
filePath := "testdata/types/light_client_optimistic_update.json"
6872

69-
f, _ := os.Open(filePath)
70-
jsonStr, _ := io.ReadAll(f)
73+
f, err := os.Open(filePath)
74+
require.NoError(t, err)
75+
jsonStr, err := io.ReadAll(f)
76+
require.NoError(t, err)
7177

7278
var result map[string]interface{}
7379
_ = json.Unmarshal(jsonStr, &result)
@@ -88,10 +94,12 @@ func TestForkedLightClientOptimisticUpdate(t *testing.T) {
8894
}
8995

9096
func TestForkedLightClientFinalityUpdate(t *testing.T) {
91-
filePath := "testdata/light_client_finality_update.json"
97+
filePath := "testdata/types/light_client_finality_update.json"
9298

93-
f, _ := os.Open(filePath)
94-
jsonStr, _ := io.ReadAll(f)
99+
f, err := os.Open(filePath)
100+
require.NoError(t, err)
101+
jsonStr, err := io.ReadAll(f)
102+
require.NoError(t, err)
95103

96104
var result map[string]interface{}
97105
_ = json.Unmarshal(jsonStr, &result)
@@ -110,3 +118,36 @@ func TestForkedLightClientFinalityUpdate(t *testing.T) {
110118
assert.Equal(t, b, buf.Bytes())
111119
}
112120
}
121+
122+
type TestProof struct {
123+
ContentKey string `yaml:"content_key"`
124+
ContentValue string `yaml:"content_value"`
125+
BeaconStateRoot string `yaml:"beacon_state_root"`
126+
HistoricalSummariesRoot string `yaml:"historical_summaries_root"`
127+
HistoricalSummariesStateProof []string `yaml:"historical_summaries_state_proof"`
128+
Epoch uint64 `yaml:"epoch"`
129+
}
130+
131+
func TestForkedHistoricalSummariesWithProof(t *testing.T) {
132+
filePath := "testdata/types/historical_summaries_with_proof.yaml"
133+
134+
f, err := os.Open(filePath)
135+
require.NoError(t, err)
136+
contentBytes, err := io.ReadAll(f)
137+
require.NoError(t, err)
138+
testData := TestProof{}
139+
err = yaml.Unmarshal(contentBytes, &testData)
140+
require.NoError(t, err)
141+
142+
historyKey := &HistoricalSummariesWithProofKey{}
143+
contentKey := hexutil.MustDecode(testData.ContentKey)
144+
err = historyKey.Deserialize(codec.NewDecodingReader(bytes.NewReader(contentKey[1:]), uint64(len(contentKey)-1)))
145+
require.NoError(t, err)
146+
require.Equal(t, testData.Epoch, historyKey.Epoch)
147+
148+
historyProof := &ForkedHistoricalSummariesWithProof{}
149+
content := hexutil.MustDecode(testData.ContentValue)
150+
err = historyProof.Deserialize(configs.Mainnet, codec.NewDecodingReader(bytes.NewReader(content), uint64(len(content))))
151+
require.NoError(t, err)
152+
require.Equal(t, uint64(historyProof.HistoricalSummariesWithProof.EPOCH), testData.Epoch)
153+
}

0 commit comments

Comments
 (0)