mirror of
https://github.com/status-im/nimbus-eth2.git
synced 2025-01-09 22:06:21 +00:00
f5e9d3ffe4
Annotate the `research` and `test` files for which no further changes are needed to successfully compile them, to not interfere with periodic tasks such as spec reference bumps.
190 lines
9.1 KiB
Nim
190 lines
9.1 KiB
Nim
# beacon_chain
|
|
# Copyright (c) 2022-2024 Status Research & Development GmbH
|
|
# Licensed and distributed under either of
|
|
# * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT).
|
|
# * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0).
|
|
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
|
|
|
{.push raises: [].}
|
|
{.used.}
|
|
|
|
import
|
|
std/typetraits,
|
|
unittest2, json_serialization,
|
|
blscurve,
|
|
../beacon_chain/spec/[crypto, keystore],
|
|
./testutil
|
|
|
|
template parse(keystore: string): auto =
|
|
try:
|
|
parseRemoteKeystore(keystore)
|
|
except SerializationError as err:
|
|
checkpoint "Serialization Error: " & err.formatMsg("<keystore>")
|
|
raise err
|
|
|
|
suite "Remove keystore testing suite":
|
|
test "vesion 1" :
|
|
for version in [1, 2]:
|
|
let remoteKeyStores = """{
|
|
"version": """ & $version & """,
|
|
"pubkey": "0x8b9c875fbe539c6429c4fc304675062579ce47fb6b2ac6b6a1ba1188ca123a80affbfe381dbbc8e7f2437709a4c3325c",
|
|
"remote": "http://127.0.0.1:6000"
|
|
}"""
|
|
let keystore = parse(remoteKeyStores)
|
|
check keystore.pubkey.toHex == "8b9c875fbe539c6429c4fc304675062579ce47fb6b2ac6b6a1ba1188ca123a80affbfe381dbbc8e7f2437709a4c3325c"
|
|
check keystore.remotes.len == 1
|
|
check $keystore.remotes[0].url == "http://127.0.0.1:6000"
|
|
check keystore.remotes[0].id == 0
|
|
check keystore.remotes[0].pubkey.toHex == "8b9c875fbe539c6429c4fc304675062579ce47fb6b2ac6b6a1ba1188ca123a80affbfe381dbbc8e7f2437709a4c3325c"
|
|
|
|
for version in [1, 3]:
|
|
let remoteKeyStores = """{
|
|
"version": """ & $version & """,
|
|
"type": "web3signer",
|
|
"pubkey": "0x8b9c875fbe539c6429c4fc304675062579ce47fb6b2ac6b6a1ba1188ca123a80affbfe381dbbc8e7f2437709a4c3325c",
|
|
"remote": "http://127.0.0.1:6000"
|
|
}"""
|
|
let keystore = parse(remoteKeyStores)
|
|
check keystore.pubkey.toHex == "8b9c875fbe539c6429c4fc304675062579ce47fb6b2ac6b6a1ba1188ca123a80affbfe381dbbc8e7f2437709a4c3325c"
|
|
check keystore.remotes.len == 1
|
|
check $keystore.remotes[0].url == "http://127.0.0.1:6000"
|
|
check keystore.remotes[0].id == 0
|
|
check keystore.remotes[0].pubkey.toHex == "8b9c875fbe539c6429c4fc304675062579ce47fb6b2ac6b6a1ba1188ca123a80affbfe381dbbc8e7f2437709a4c3325c"
|
|
|
|
test "Single remote":
|
|
for version in [2, 3]:
|
|
let remoteKeyStores = """{
|
|
"version": """ & $version & """,
|
|
"type": "web3signer",
|
|
"pubkey": "0x8b9c875fbe539c6429c4fc304675062579ce47fb6b2ac6b6a1ba1188ca123a80affbfe381dbbc8e7f2437709a4c3325c",
|
|
"remotes": [
|
|
{
|
|
"url": "http://127.0.0.1:6000",
|
|
"pubkey": "8b9c875fbe539c6429c4fc304675062579ce47fb6b2ac6b6a1ba1188ca123a80affbfe381dbbc8e7f2437709a4c3325c"
|
|
}
|
|
]
|
|
}"""
|
|
let keystore = parse(remoteKeyStores)
|
|
check keystore.pubkey.toHex == "8b9c875fbe539c6429c4fc304675062579ce47fb6b2ac6b6a1ba1188ca123a80affbfe381dbbc8e7f2437709a4c3325c"
|
|
check keystore.remotes.len == 1
|
|
check $keystore.remotes[0].url == "http://127.0.0.1:6000"
|
|
check keystore.remotes[0].id == 0
|
|
check keystore.remotes[0].pubkey.toHex == "8b9c875fbe539c6429c4fc304675062579ce47fb6b2ac6b6a1ba1188ca123a80affbfe381dbbc8e7f2437709a4c3325c"
|
|
|
|
test "Many remotes" :
|
|
for version in [2, 3]:
|
|
let remoteKeyStores = """{
|
|
"version": """ & $version & """,
|
|
"type": "web3signer",
|
|
"pubkey": "0x8ebc7291df2a671326de83471a4feeb759cc842caa59aa92065e3508baa7e50513bc49a79ff4387c8ef747764f364b6f",
|
|
"remotes": [
|
|
{
|
|
"url": "http://127.0.0.1:6000",
|
|
"id": 1,
|
|
"pubkey": "95313b967bcd761175dbc2a5685c16b1a73000e66f9622eca080cb0428dd3db61f7377b32b1fd27f3bdbdf2b554e7f87"
|
|
},
|
|
{
|
|
"url": "http://127.0.0.1:6001",
|
|
"id": 2,
|
|
"pubkey": "8b8c115d19a9bdacfc7af9c8e8fc1353af54b63b0e772a641499cac9b6ea5cb1b3479cfa52ebc98ba5afe07a06c06238"
|
|
},
|
|
{
|
|
"url": "http://127.0.0.1:6002",
|
|
"id": 3,
|
|
"pubkey": "8f5f9e305e7fcbde94182747f5ecec573d1786e8320a920347a74c0ff5e70f12ca22607c98fdc8dbe71161db59e0ac9d"
|
|
}
|
|
],
|
|
"threshold": 2
|
|
}"""
|
|
let keystore = parse(remoteKeyStores)
|
|
check keystore.pubkey.toHex == "8ebc7291df2a671326de83471a4feeb759cc842caa59aa92065e3508baa7e50513bc49a79ff4387c8ef747764f364b6f"
|
|
check keystore.remotes.len == 3
|
|
check $keystore.remotes[0].url == "http://127.0.0.1:6000"
|
|
check $keystore.remotes[1].url == "http://127.0.0.1:6001"
|
|
check $keystore.remotes[2].url == "http://127.0.0.1:6002"
|
|
check keystore.remotes[0].id == 1
|
|
check keystore.remotes[1].id == 2
|
|
check keystore.remotes[2].id == 3
|
|
check keystore.remotes[0].pubkey.toHex == "95313b967bcd761175dbc2a5685c16b1a73000e66f9622eca080cb0428dd3db61f7377b32b1fd27f3bdbdf2b554e7f87"
|
|
check keystore.remotes[1].pubkey.toHex == "8b8c115d19a9bdacfc7af9c8e8fc1353af54b63b0e772a641499cac9b6ea5cb1b3479cfa52ebc98ba5afe07a06c06238"
|
|
check keystore.remotes[2].pubkey.toHex == "8f5f9e305e7fcbde94182747f5ecec573d1786e8320a920347a74c0ff5e70f12ca22607c98fdc8dbe71161db59e0ac9d"
|
|
check keystore.threshold == 2
|
|
|
|
test "Verifying Signer / Single remote":
|
|
for version in [3]:
|
|
let remoteKeyStores = """{
|
|
"version": """ & $version & """,
|
|
"type": "verifying-web3signer",
|
|
"proven_block_properties": [
|
|
{
|
|
"path": ".execution_payload.fee_recipient"
|
|
}
|
|
],
|
|
"pubkey": "0x8b9c875fbe539c6429c4fc304675062579ce47fb6b2ac6b6a1ba1188ca123a80affbfe381dbbc8e7f2437709a4c3325c",
|
|
"remotes": [
|
|
{
|
|
"url": "http://127.0.0.1:6000",
|
|
"pubkey": "8b9c875fbe539c6429c4fc304675062579ce47fb6b2ac6b6a1ba1188ca123a80affbfe381dbbc8e7f2437709a4c3325c"
|
|
}
|
|
]
|
|
}"""
|
|
let keystore = parse(remoteKeyStores)
|
|
check keystore.pubkey.toHex == "8b9c875fbe539c6429c4fc304675062579ce47fb6b2ac6b6a1ba1188ca123a80affbfe381dbbc8e7f2437709a4c3325c"
|
|
check keystore.remotes.len == 1
|
|
check $keystore.remotes[0].url == "http://127.0.0.1:6000"
|
|
check keystore.remotes[0].id == 0
|
|
check keystore.remotes[0].pubkey.toHex == "8b9c875fbe539c6429c4fc304675062579ce47fb6b2ac6b6a1ba1188ca123a80affbfe381dbbc8e7f2437709a4c3325c"
|
|
check keystore.provenBlockProperties.len == 1
|
|
check keystore.provenBlockProperties[0].bellatrixIndex == some GeneralizedIndex(401)
|
|
check keystore.provenBlockProperties[0].capellaIndex == some GeneralizedIndex(401)
|
|
check keystore.provenBlockProperties[0].denebIndex == some GeneralizedIndex(801)
|
|
|
|
test "Verifying Signer / Many remotes":
|
|
for version in [3]:
|
|
let remoteKeyStores = """{
|
|
"version": """ & $version & """,
|
|
"type": "verifying-web3signer",
|
|
"proven_block_properties": [
|
|
{
|
|
"description": "The fee recipient field of the execution payload",
|
|
"path": ".execution_payload.fee_recipient"
|
|
}
|
|
],
|
|
"pubkey": "0x8ebc7291df2a671326de83471a4feeb759cc842caa59aa92065e3508baa7e50513bc49a79ff4387c8ef747764f364b6f",
|
|
"remotes": [
|
|
{
|
|
"url": "http://127.0.0.1:6000",
|
|
"id": 1,
|
|
"pubkey": "95313b967bcd761175dbc2a5685c16b1a73000e66f9622eca080cb0428dd3db61f7377b32b1fd27f3bdbdf2b554e7f87"
|
|
},
|
|
{
|
|
"url": "http://127.0.0.1:6001",
|
|
"id": 2,
|
|
"pubkey": "8b8c115d19a9bdacfc7af9c8e8fc1353af54b63b0e772a641499cac9b6ea5cb1b3479cfa52ebc98ba5afe07a06c06238"
|
|
},
|
|
{
|
|
"url": "http://127.0.0.1:6002",
|
|
"id": 3,
|
|
"pubkey": "8f5f9e305e7fcbde94182747f5ecec573d1786e8320a920347a74c0ff5e70f12ca22607c98fdc8dbe71161db59e0ac9d"
|
|
}
|
|
],
|
|
"threshold": 2
|
|
}"""
|
|
let keystore = parse(remoteKeyStores)
|
|
check keystore.pubkey.toHex == "8ebc7291df2a671326de83471a4feeb759cc842caa59aa92065e3508baa7e50513bc49a79ff4387c8ef747764f364b6f"
|
|
check keystore.remotes.len == 3
|
|
check $keystore.remotes[0].url == "http://127.0.0.1:6000"
|
|
check $keystore.remotes[1].url == "http://127.0.0.1:6001"
|
|
check $keystore.remotes[2].url == "http://127.0.0.1:6002"
|
|
check keystore.remotes[0].id == 1
|
|
check keystore.remotes[1].id == 2
|
|
check keystore.remotes[2].id == 3
|
|
check keystore.remotes[0].pubkey.toHex == "95313b967bcd761175dbc2a5685c16b1a73000e66f9622eca080cb0428dd3db61f7377b32b1fd27f3bdbdf2b554e7f87"
|
|
check keystore.remotes[1].pubkey.toHex == "8b8c115d19a9bdacfc7af9c8e8fc1353af54b63b0e772a641499cac9b6ea5cb1b3479cfa52ebc98ba5afe07a06c06238"
|
|
check keystore.remotes[2].pubkey.toHex == "8f5f9e305e7fcbde94182747f5ecec573d1786e8320a920347a74c0ff5e70f12ca22607c98fdc8dbe71161db59e0ac9d"
|
|
check keystore.threshold == 2
|
|
check keystore.provenBlockProperties.len == 1
|
|
check keystore.provenBlockProperties[0].bellatrixIndex == some GeneralizedIndex(401)
|
|
check keystore.provenBlockProperties[0].capellaIndex == some GeneralizedIndex(401)
|
|
check keystore.provenBlockProperties[0].denebIndex == some GeneralizedIndex(801)
|