grandinetech / grandine Goto Github PK
View Code? Open in Web Editor NEWHigh performance Ethereum consensus client
License: GNU General Public License v3.0
High performance Ethereum consensus client
License: GNU General Public License v3.0
We requested payload building for every slot mainly for debugging purposes. However, we should request only when we are building a block.
You are at the right place if you just got Illegal instruction
error.
Our initial idea was to not confuse users with an additional set of portable
builds and simply not support older CPUs (more tech details here supranational/blst#10). However, it could be that the confusion of portable
builds brings fewer problems than not supporting older CPUs. Feel free to leave a reaction if you need older CPUs support.
A standalone validator client has advantages for users:
Surprisingly, seems that people are trying Grandine on the same machines that already run some other client. Grandine should tell which port is already taken and how to specify a different port in the error message.
Logs from Eth R&D discord:
$ ./grandine-linux-0.1.0 --network prater
[2021-06-30T17:52:21.613+02:00] [INFO] [grandine] starting beacon node
[2021-06-30T17:52:21.613+02:00] [INFO] [grandine] chain: prater
[2021-06-30T17:52:21.613+02:00] [INFO] [grandine] data directory: "/home/user/.grandine/prater"
[2021-06-30T17:52:21.613+02:00] [INFO] [grandine] Eth1 RPC URL: None
[2021-06-30T17:52:21.613+02:00] [INFO] [grandine] graffiti: []
[2021-06-30T17:52:21.613+02:00] [INFO] [grandine] HTTP API address: 127.0.0.1:9001
[2021-06-30T17:52:21.613+02:00] [INFO] [grandine] archival epoch interval: 32
[2021-06-30T17:52:21.613+02:00] [INFO] [grandine] slasher enabled: false
[2021-06-30T17:52:21.614+02:00] [INFO] [grandine::schema] initialized data directory with schema version 0.1.0
[2021-06-30T17:52:22.218+02:00] [WARN] [beacon_fork_choice_sifrai_array::storage] Latest state checkpoint was not found. Attempting to find stored state by iteration
[2021-06-30T17:52:22.232+02:00] [WARN] [beacon_fork_choice_sifrai_array::storage] Latest state checkpoint was not found. Processing passed blocks: 0
[2021-06-30T17:52:22.238+02:00] [INFO] [beacon_fork_choice_sifrai_array::storage] saving store head_slot: 0
[2021-06-30T17:52:22.238+02:00] [INFO] [beacon_fork_choice_sifrai_array::storage] saving state on slot 0
[2021-06-30T17:52:22.382+02:00] [INFO] [beacon_fork_choice_sifrai_array::mutator] chain saved (finalized blocks: 1, unfinalized blocks: 0)
[2021-06-30T17:52:22.439+02:00] [ERROR] [grandine] Io(Os { code: 98, kind: AddrInUse, message: "Address already in use" })
As reported by @barnabasbusa on Discord - we should include commit hash to /eth/v1/node/version
Instead of latest
and latest-arm64,
have a single image that supports both amd64 and arm64. This makes integration of Grandine with automation frameworks like eth-docker considerably easier.
Support doppelganger detection in some fashion for keys loaded into Grandine.
Definitely not urgent; could make sense after a standalone VC exists and is stable.
Stat collection is useful for solo stakers, where the CL will send statistics to an API endpoint for alerting via a phone app.
The current repository description describes the project as 'The Fastest Ethereum 2.0 Client' which is using old eth2 nomenclature and can be quite confusing. The correct naming should be a 'Consensus client' or 'Consensus layer client'. This is the most significant reference I noticed so far but if there are others, consider updating it too.
Btw congrats on going FOSS with GPL!
Another feedback from Eth R&D discord by @yorickdowne. Technically, it's not a problem, however, some users may be sensitive to these warnings. Grandine should not throw these messages on shutdown.
^C[2021-06-30T17:57:18.935+02:00] [INFO] [grandine] Saving current chain before exit. Please wait...
[2021-06-30T17:57:18.964+02:00] [WARN] [beacon_fork_choice_sifrai_array::messages] send to p2p failed because the receiver was dropped
[2021-06-30T17:57:18.993+02:00] [WARN] [beacon_fork_choice_sifrai_array::messages] send to p2p failed because the receiver was dropped
[2021-06-30T17:57:18.993+02:00] [WARN] [beacon_fork_choice_sifrai_array::messages] send to validator failed because the receiver was dropped
[2021-06-30T17:57:18.998+02:00] [WARN] [beacon_fork_choice_sifrai_array::messages] send to p2p failed because the receiver was dropped
[2021-06-30T17:57:18.998+02:00] [WARN] [beacon_fork_choice_sifrai_array::messages] send to validator failed because the receiver was dropped
[2021-06-30T17:57:19.004+02:00] [WARN] [beacon_fork_choice_sifrai_array::messages] send to p2p failed because the receiver was dropped
We used a public https://github.com/grandinetech/eth2-cache repo before, but we switched to internal Gitlab because Github isn't very friendly for large repos with large files. This problem is actually two-fold - first we need a better way to manage genesis (it should be separate from large repo) and then fix the rest that depends on eth2-cache.
In addition to current .json/.txt let's support keystores/secrets without extensions. Also, print more information during keys loading.
If Web3signer is not yet up when Grandine starts, Grandine will not retry the connection periodically, meaning it will not serve validator duties.
debian@eth-testing-ovh:~/eth-docker$ ./ethd logs consensus | grep -i Web3signer
consensus-1 | [2024-03-13T11:47:16.563+00:00] [] [grandine::grandine_config] using Web3Signer API to sign validator messages (API URLs: [http://web3signer:9000/])
consensus-1 | [2024-03-13T11:47:16.592+00:00] [] [signer::web3signer::api] failed to load Web3Signer keys from http://web3signer:9000/: error sending request for url (http://web3signer:9000/api/v1/eth2/publicKeys): error trying to connect: dns error: failed to lookup address information: Name or service not known
We pass the majority of v1.1.4
tests already. The main missing part now is the code for communication with EL.
Grandine subscribed to gossipsub core topics before sync is complete. In order to not get downscored we need to subscribe to gossipsub core topics after sync. Thanks @AgeManning for reporting.
#16 enables build on Github CI.
We are in the process to test cross beacon <> validator client compatibility, and found a bug when testing Grandine CL with lodestar VC.
Lodestar reports:
Apr-05 11:27:04.125[] error: Error proposing block slot=1, validator=0xa158…501f - Failed to produce block: validator.produceBlockV3 - Bad Request: invalid query string: unknown field `fee_recipient`, expected one of `randao_reveal`, `graffiti`, `skip_randao_verification` - Failed to produce block
Error: Failed to produce block: validator.produceBlockV3 - Bad Request: invalid query string: unknown field `fee_recipient`, expected one of `randao_reveal`, `graffiti`, `skip_randao_verification` - Failed to produce block
at Function.assert (file:///usr/app/packages/api/src/utils/client/httpClient.ts:44:13)
at BlockProposingService.produceBlockWrapper (file:///usr/app/packages/validator/src/services/block.ts:212:14)
at processTicksAndRejections (node:internal/process/task_queues:95:5)
at BlockProposingService.createAndPublishBlock (file:///usr/app/packages/validator/src/services/block.ts:144:29)
at async Promise.all (index 0)
Grandine reports:
nothing out of the ordinary
Snooper between cl <> vc reports:
nothing out of the ordinary
I would expect all client combinations would work.
config.yaml:
participants:
- cl_type: grandine
vc_type: lodestar
additional_services:
- dora
snooper_enabled: true
global_log_level: debug
kurtosis run github.com/kurtosis-tech/ethereum-package --args-file config.yaml
Current BN <> VC Compatibility list tracker
Linux
next - sha256:c046598ea7a7e9523fb5108005626ed8dfa0bf2df71e0d79ed531aa8b4e7d88b
cc: @pk910
Eth Docker uses the standard keymanager API to handle keys. As Grandine goes FOSS I'd like to offer support for it; this requires keymanager API to be present.
Currently slashing_protection.sqlite
is in beacon
. This is un-intuitive and can lead to slashing when a user resyncs the beacon by stopping it, removing the contents of beacon
and starting again, depending on how fast the resync from checkpoint is.
Placing it into validator
is in line with what other clients do, and makes sense logically, since it's the validator that's being protected from slashing.
We need to use grandine_version
crate in all the layers of Grandine. Thanks @AgeManning for reporting.
network: holesky
validators: 3.3k attached through web3signer
some of them appear to be invalid (i.e the same attester index doesnt appear in both logged attestations), but there are indeed valid detected double votes, such as validator 967119 for example.
noticed that to they have been detected after they were already slashed on the chain? beaconcha.in says the slashing for 967119 was included in slot 889285, but the below logs are at slot 889349? thats exactly 64 slots later.
anyways this caused all attached validators to be offline until restarted
[2024-01-30T00:29:37.523+00:00] [INFO] [validator::validator] started work on execution payload with id Capella(0x02d2c34f5115bade) for head 0x9fd0b5e41a7b8cdeaf6ca125f935db1a25ec8da72592f9632c865754ed64cbf3 at slot 889349
[2024-01-30T00:29:39.000+00:00] [INFO] [validator::validator] ProposeFourth tick in slot 889348
[2024-01-30T00:29:40.000+00:00] [INFO] [validator::validator] Attest tick in slot 889348
[2024-01-30T00:29:40.129+00:00] [INFO] [validator::validator] validators [1316016, 1316864, 1316129, 1315144, 1315758, 1316669, 1316325, 1317236, 1316831, 1315085, 1316020, 1315244, 1315087, 1316177, 1316882, 1317008, 1315030, 1317107, 1317423, 1317202, 1317508, 1315176, 1316002, 1317138, 1315819, 1315150, 1316353, 1315211, 1318077, 1316036, 1315179, 1315980, 1316065, 1317208, 1316040, 1315533, 1315364, 1315370, 1317989, 1315004, 1316575, 1315485, 1315497, 1317131, 1317193, 1315692, 1318138, 1316548, 1317873, 1315623, 1317514, 1318060, 1315543, 1317327, 1315396, 1317333, 1317268, 1315771, 1318058, 1316241, 1317655, 1317123, 1316027, 1317394, 1317080, 1316420, 1318074, 1316725, 1315882, 1315261, 1316391, 1315329, 1317175, 1318168, 1318001, 1316778, 1317069, 1316403, 1318084, 1315339, 1317792, 1316105, 1316008, 1315489, 1315208, 1316784, 1316702, 1315200, 1317062, 1315734, 1318160, 1315378, 1315897, 1316127, 1315262, 1315919, 1316017, 1316908, 1315305, 1316792, 1317850, 1317300, 1315937, 1315051, 1317815, 1317302, 1315357, 1316518, 1317766, 1316868, 1316641] attesting in slot 889348
[2024-01-30T00:29:41.534+00:00] [INFO] [eth1::eth1_chain] started Eth1 block download task
[2024-01-30T00:29:41.536+00:00] [INFO] [eth1::download_manager] downloaded 1 Eth1 blocks from block 836233 to block 836233
[2024-01-30T00:29:43.001+00:00] [INFO] [validator::validator] AttestFourth tick in slot 889348
[2024-01-30T00:29:44.001+00:00] [INFO] [validator::validator] Aggregate tick in slot 889348
[2024-01-30T00:29:44.003+00:00] [INFO] [validator::validator] validators [1315758, 1316725, 1316105] aggregating in slot 889348
[2024-01-30T00:29:46.538+00:00] [INFO] [eth1::eth1_chain] started Eth1 block download task
[2024-01-30T00:29:47.001+00:00] [INFO] [validator::validator] AggregateFourth tick in slot 889348
[2024-01-30T00:29:48.094+00:00] [INFO] [validator::validator] Propose tick in slot 889349
[2024-01-30T00:29:50.284+00:00] [INFO] [p2p::network] [Peers: 249/256] received beacon block as gossip (slot: 889349, root: 0x03d7a4cef2a668618b54c0ba91e40918bf4ee28b626d8f454dd69c8f780df23e)
[2024-01-30T00:29:50.645+00:00] [INFO] [validator::validator] started work on execution payload with id Capella(0x02a931aac064c2fe) for head 0x03d7a4cef2a668618b54c0ba91e40918bf4ee28b626d8f454dd69c8f780df23e at slot 889350
[2024-01-30T00:29:51.001+00:00] [INFO] [validator::validator] ProposeFourth tick in slot 889349
[2024-01-30T00:29:51.540+00:00] [INFO] [eth1::eth1_chain] started Eth1 block download task
[2024-01-30T00:29:51.544+00:00] [INFO] [eth1::download_manager] downloaded 1 Eth1 blocks from block 836234 to block 836234
[2024-01-30T00:29:52.001+00:00] [INFO] [validator::validator] Attest tick in slot 889349
[2024-01-30T00:29:52.177+00:00] [INFO] [validator::validator] validators [1315802, 1315777, 1316411, 1316063, 1317331, 1317689, 1315739, 1316584, 1315573, 1316705, 1316911, 1316821, 1315559, 1317556, 1316979, 1317493, 1315048, 1317094, 1316846, 1317602, 1316216, 1316313, 1318047, 1315740, 1317400, 1316220, 1317132, 1316441, 1317524, 1317857, 1315584, 1317951, 1317943, 1318171, 1316513, 1315591, 1317491, 1315574, 1317976, 1316333, 1316218, 1315059, 1316737, 1315231, 1316149, 1315173, 1316734, 1315912, 1316095, 1317323, 1317450, 1317337, 1316061, 1315215, 1315005, 1316157, 1316787, 1316497, 1316351, 1317097, 1316529, 1315228, 1316021, 1316929, 1317271, 1315546, 1315526, 1315913, 1316773, 1316327, 1317927, 1316223, 1317999, 1315983, 1315995, 1318146, 1315035, 1318139, 1317624, 1315071, 1316053, 1316245, 1317324, 1315587, 1315006, 1315952, 1316416, 1318153, 1317142, 1315205, 1317710, 1318274, 1317286, 1315227, 1315997, 1317283, 1317784, 1318174, 1317718, 1315188, 1317146, 1317795, 1316515, 1316532, 1315956, 1316907, 1316736, 1318180, 1316756, 1317677, 1315308, 1317950, 1315814, 1316273, 1317104, 1315924, 1315326, 1318188, 1318073, 1317073, 1316268, 1315307] attesting in slot 889349
[2024-01-30T00:29:54.162+00:00] [INFO] [slasher::slasher] attester slashing constructed: ExplainedAttesterSlashing { slashing: AttesterSlashing { attestation_1: IndexedAttestation { attesting_indices: [946254], data: AttestationData { slot: 889249, index: 11, beacon_block_root: 0x6566d041dc3d61f6604af21f4f06b50464cefd46037daa0843bd6356640512d1, source: Checkpoint { epoch: 27788, root: 0x4bae73a8f746a022a42b49cd5a192da5112d87a3e1f493ebd9afef4dad221fff }, target: Checkpoint { epoch: 27789, root: 0x6566d041dc3d61f6604af21f4f06b50464cefd46037daa0843bd6356640512d1 } }, signature: 0x977f7b0b51b21bb5f1d440e836cf061c00130e7c57a7d200dc2d3a6798dbcb8cb7ef85d0824f1dbaeb81da64f2405e7810c9c95ab7f11108800b3d4ce6c87c991367ef584a3d9fa6ace80e873f0d13db58e88b6cf08b5a405ed0e0acb657b8c7 }, attestation_2: IndexedAttestation { attesting_indices: [985739], data: AttestationData { slot: 889249, index: 11, beacon_block_root: 0x694d5b71e186639dc54e0b509997744a0abbb7e56dde613139c7893602bf11d2, source: Checkpoint { epoch: 27788, root: 0x4bae73a8f746a022a42b49cd5a192da5112d87a3e1f493ebd9afef4dad221fff }, target: Checkpoint { epoch: 27789, root: 0x6566d041dc3d61f6604af21f4f06b50464cefd46037daa0843bd6356640512d1 } }, signature: 0xae78c6d5614c2382f8fe7563cd592cfc88754fa7bf61e29b20dc34cce4996964bcb38235d8697ea77fd1786d9a520fc11122a3b76d0924b30a3f4ed30eb354c2405546a01d0830a20231857b11789f208436851f33734a78fde94b7c58e34185 } }, reason: DoubleVote }
[2024-01-30T00:29:54.162+00:00] [INFO] [slasher::slasher] attester slashing constructed: ExplainedAttesterSlashing { slashing: AttesterSlashing { attestation_1: IndexedAttestation { attesting_indices: [972765], data: AttestationData { slot: 889249, index: 39, beacon_block_root: 0x6566d041dc3d61f6604af21f4f06b50464cefd46037daa0843bd6356640512d1, source: Checkpoint { epoch: 27788, root: 0x4bae73a8f746a022a42b49cd5a192da5112d87a3e1f493ebd9afef4dad221fff }, target: Checkpoint { epoch: 27789, root: 0x6566d041dc3d61f6604af21f4f06b50464cefd46037daa0843bd6356640512d1 } }, signature: 0xb8aef84c3def06d5d50221cb3386620d7da8daa07cd46af3694875740df5ad2a62dbe268ef0271d45dac10a6e0f1db540c35c6be6890a5065213cd1a0e0b3c0817f509d410110d498246fba873c44c792cefad49ffc6185ad7f7b8ce9a679af4 }, attestation_2: IndexedAttestation { attesting_indices: [960499], data: AttestationData { slot: 889249, index: 39, beacon_block_root: 0x694d5b71e186639dc54e0b509997744a0abbb7e56dde613139c7893602bf11d2, source: Checkpoint { epoch: 27788, root: 0x4bae73a8f746a022a42b49cd5a192da5112d87a3e1f493ebd9afef4dad221fff }, target: Checkpoint { epoch: 27789, root: 0x6566d041dc3d61f6604af21f4f06b50464cefd46037daa0843bd6356640512d1 } }, signature: 0xae096981ddcb8e0f3159b9b097e4e6e97b3d05515294d0decfdd6a5dd13d03f2607a164bea71679da43d1813ba64c1e9113ba26f6a0146ef4d9cdaa73a68dbd7092e072a32bf24cd26caa1265c3507cf1766f28f7ca5cbaaefcac212505651ae } }, reason: DoubleVote }
[2024-01-30T00:29:54.165+00:00] [WARN] [fork_choice_control::mutator] attester slashing rejected (error: no attesters slashed, origin: Own)
[2024-01-30T00:29:54.165+00:00] [WARN] [fork_choice_control::mutator] attester slashing rejected (error: no attesters slashed, origin: Own)
[2024-01-30T00:29:55.405+00:00] [INFO] [slasher::slasher] attester slashing constructed: ExplainedAttesterSlashing { slashing: AttesterSlashing { attestation_1: IndexedAttestation { attesting_indices: [967119], data: AttestationData { slot: 889249, index: 21, beacon_block_root: 0x6566d041dc3d61f6604af21f4f06b50464cefd46037daa0843bd6356640512d1, source: Checkpoint { epoch: 27788, root: 0x4bae73a8f746a022a42b49cd5a192da5112d87a3e1f493ebd9afef4dad221fff }, target: Checkpoint { epoch: 27789, root: 0x6566d041dc3d61f6604af21f4f06b50464cefd46037daa0843bd6356640512d1 } }, signature: 0xa3a5347a40cdf788dde1b14fc6d79c1f3e2db7b84d5e6529990c5b1f2b89b4a24773bec1ebe346a00dd10f0753e5cf7e11ac55cfe67ded16a0d5312f9652b19fa49218037bbff0120eea1f52be52cd06ce0993bf17d7f0f80beb082c11e4167a }, attestation_2: IndexedAttestation { attesting_indices: [967119], data: AttestationData { slot: 889249, index: 21, beacon_block_root: 0x694d5b71e186639dc54e0b509997744a0abbb7e56dde613139c7893602bf11d2, source: Checkpoint { epoch: 27788, root: 0x4bae73a8f746a022a42b49cd5a192da5112d87a3e1f493ebd9afef4dad221fff }, target: Checkpoint { epoch: 27789, root: 0x6566d041dc3d61f6604af21f4f06b50464cefd46037daa0843bd6356640512d1 } }, signature: 0x9140a0243f531391a4b090f91d74e9e027958a69a373ca1055f5be9501a855a4be5ed7bc3bd97efb1dcc2cec501f58300573138e260046f230ee5f1f945e34812dc6a602789937cf3fa730855801db6a9c106c978ffe94d11a8e9900a8c3317e } }, reason: DoubleVote }
[2024-01-30T00:29:55.407+00:00] [WARN] [fork_choice_control::mutator] attester slashing rejected (error: no attesters slashed, origin: Own)
[2024-01-30T00:29:55.408+00:00] [INFO] [slasher::slasher] attester slashing constructed: ExplainedAttesterSlashing { slashing: AttesterSlashing { attestation_1: IndexedAttestation { attesting_indices: [944920], data: AttestationData { slot: 889249, index: 44, beacon_block_root: 0x6566d041dc3d61f6604af21f4f06b50464cefd46037daa0843bd6356640512d1, source: Checkpoint { epoch: 27788, root: 0x4bae73a8f746a022a42b49cd5a192da5112d87a3e1f493ebd9afef4dad221fff }, target: Checkpoint { epoch: 27789, root: 0x6566d041dc3d61f6604af21f4f06b50464cefd46037daa0843bd6356640512d1 } }, signature: 0x828b46381ba93a3d0b82cec2278feb605e3067c627a02d3c5d36a58a4a9001fe9fb1e5c021ac83a60ac97921e81e18c60bcab1afce32a48b04044e9fb246b983de0e470d0a76ea9555eb32611934368d143f60ba3be1cc2b9d3c67501df72278 }, attestation_2: IndexedAttestation { attesting_indices: [944920], data: AttestationData { slot: 889249, index: 44, beacon_block_root: 0x694d5b71e186639dc54e0b509997744a0abbb7e56dde613139c7893602bf11d2, source: Checkpoint { epoch: 27788, root: 0x4bae73a8f746a022a42b49cd5a192da5112d87a3e1f493ebd9afef4dad221fff }, target: Checkpoint { epoch: 27789, root: 0x6566d041dc3d61f6604af21f4f06b50464cefd46037daa0843bd6356640512d1 } }, signature: 0xa25ac0a17263e93a6fd6744fecf6b0903253f50ea7f3f0b28a9ba8b08ba58bc9a9afca83aa5b0b19fa8bba03fde2f4d0023d4aa62777d7888ec4c39f3e23cd1dc20dadf20e0e412180178b162c2cfb01b83a62bb59bf348949b28a6fba49a32b } }, reason: DoubleVote }
[2024-01-30T00:29:55.408+00:00] [INFO] [slasher::slasher] attester slashing constructed: ExplainedAttesterSlashing { slashing: AttesterSlashing { attestation_1: IndexedAttestation { attesting_indices: [979682], data: AttestationData { slot: 889249, index: 41, beacon_block_root: 0x6566d041dc3d61f6604af21f4f06b50464cefd46037daa0843bd6356640512d1, source: Checkpoint { epoch: 27788, root: 0x4bae73a8f746a022a42b49cd5a192da5112d87a3e1f493ebd9afef4dad221fff }, target: Checkpoint { epoch: 27789, root: 0x6566d041dc3d61f6604af21f4f06b50464cefd46037daa0843bd6356640512d1 } }, signature: 0xa5a8de5ead44cabca0d238ace4358425fdf0c32a2dd1b614262502271b8302210cb4ef0086e132aa0656916c58375d180398276bbe651f96f5005551efed66d850a2189137ac2267f96f10db39fac2e2489d1670ec66f5457eaf9352df0bc2e3 }, attestation_2: IndexedAttestation { attesting_indices: [979682], data: AttestationData { slot: 889249, index: 41, beacon_block_root: 0x694d5b71e186639dc54e0b509997744a0abbb7e56dde613139c7893602bf11d2, source: Checkpoint { epoch: 27788, root: 0x4bae73a8f746a022a42b49cd5a192da5112d87a3e1f493ebd9afef4dad221fff }, target: Checkpoint { epoch: 27789, root: 0x6566d041dc3d61f6604af21f4f06b50464cefd46037daa0843bd6356640512d1 } }, signature: 0x8057b0f5a98283cf6f292c769610c1f9ca020670c4fcc6eaa1c30d474a5a46cfba18b1ff166038ea29386915dab35bff1189670c5ebe28dd7d8b2d9a8e27bcc93ba90c59b374b239fd3b341587fa5958ab6f67d39261093011013a3308c3862e } }, reason: DoubleVote }
[2024-01-30T00:29:55.411+00:00] [WARN] [fork_choice_control::mutator] attester slashing rejected (error: no attesters slashed, origin: Own)
[2024-01-30T00:29:55.412+00:00] [WARN] [fork_choice_control::mutator] attester slashing rejected (error: no attesters slashed, origin: Own)
[2024-01-30T00:29:55.576+00:00] [INFO] [slasher::slasher] attester slashing constructed: ExplainedAttesterSlashing { slashing: AttesterSlashing { attestation_1: IndexedAttestation { attesting_indices: [944920], data: AttestationData { slot: 889249, index: 44, beacon_block_root: 0x6566d041dc3d61f6604af21f4f06b50464cefd46037daa0843bd6356640512d1, source: Checkpoint { epoch: 27788, root: 0x4bae73a8f746a022a42b49cd5a192da5112d87a3e1f493ebd9afef4dad221fff }, target: Checkpoint { epoch: 27789, root: 0x6566d041dc3d61f6604af21f4f06b50464cefd46037daa0843bd6356640512d1 } }, signature: 0x828b46381ba93a3d0b82cec2278feb605e3067c627a02d3c5d36a58a4a9001fe9fb1e5c021ac83a60ac97921e81e18c60bcab1afce32a48b04044e9fb246b983de0e470d0a76ea9555eb32611934368d143f60ba3be1cc2b9d3c67501df72278 }, attestation_2: IndexedAttestation { attesting_indices: [931404], data: AttestationData { slot: 889249, index: 44, beacon_block_root: 0x694d5b71e186639dc54e0b509997744a0abbb7e56dde613139c7893602bf11d2, source: Checkpoint { epoch: 27788, root: 0x4bae73a8f746a022a42b49cd5a192da5112d87a3e1f493ebd9afef4dad221fff }, target: Checkpoint { epoch: 27789, root: 0x6566d041dc3d61f6604af21f4f06b50464cefd46037daa0843bd6356640512d1 } }, signature: 0xb6dbc20388ce0bf8a3b79ea01a76c791036592fe9cfab6da9d271757aa17bff594a64cb1370509c78efaae025a02a2730eae6a80076c284bbbe60960acdd1675302a824e8e426e116ce8ac3b05b42c7b78fa090343201eba707d2c9f363a41b3 } }, reason: DoubleVote }
[2024-01-30T00:29:55.578+00:00] [WARN] [fork_choice_control::mutator] attester slashing rejected (error: no attesters slashed, origin: Own)
[2024-01-30T00:29:56.546+00:00] [INFO] [eth1::eth1_chain] started Eth1 block download task
[2024-01-30T00:30:01.547+00:00] [INFO] [eth1::eth1_chain] started Eth1 block download task
[2024-01-30T00:30:02.546+00:00] [INFO] [p2p::network] [Peers: 249/256] received beacon block as gossip (slot: 889350, root: 0x8a7287a9a1b4f6c6c291056ec71fb55394ad2184439e4dc7ab52d26db5973aa6)
[2024-01-30T00:30:06.549+00:00] [INFO] [eth1::eth1_chain] started Eth1 block download task
[2024-01-30T00:30:11.549+00:00] [INFO] [eth1::eth1_chain] started Eth1 block download task
[2024-01-30T00:30:12.963+00:00] [INFO] [p2p::network] [Peers: 249/256] received beacon block as gossip (slot: 889351, root: 0xe85eccd4f0a65d4505e8a5d93fa34d6875c87c2f19b72698360b89bc39f43ceb)
[2024-01-30T00:30:14.721+00:00] [INFO] [metrics::service] metrics sent to external service
[2024-01-30T00:30:16.551+00:00] [INFO] [eth1::eth1_chain] started Eth1 block download task
[2024-01-30T00:30:21.552+00:00] [INFO] [eth1::eth1_chain] started Eth1 block download task
[2024-01-30T00:30:26.285+00:00] [INFO] [p2p::network] [Peers: 252/256] received beacon block as gossip (slot: 889352, root: 0x7a404547bf5d17fd76f105308250b4c993f6063ebf431c3bcedfcfe527e6c022)
[2024-01-30T00:30:26.553+00:00] [INFO] [eth1::eth1_chain] started Eth1 block download task
[2024-01-30T00:30:31.554+00:00] [INFO] [eth1::eth1_chain] started Eth1 block download task
[2024-01-30T00:30:32.401+00:00] [WARN] [p2p::network] [Peers: 251/256] request 107043 to peer 16Uiu2HAmGmFmaKxGkmDTLjA4WAsocfb7GLcSh3FvK9BDvpWvxPSC failed: Stream Timeout
[2024-01-30T00:30:36.555+00:00] [INFO] [eth1::eth1_chain] started Eth1 block download task
[2024-01-30T00:30:36.687+00:00] [INFO] [p2p::network] [Peers: 252/256] received beacon block as gossip (slot: 889353, root: 0x27b8695db5580da2b7b7d9d1c64894ac235ddf46bdcc4c7911409b159e8ec3c1)
[2024-01-30T00:30:41.557+00:00] [INFO] [eth1::eth1_chain] started Eth1 block download task
[2024-01-30T00:30:46.558+00:00] [INFO] [eth1::eth1_chain] started Eth1 block download task
[2024-01-30T00:30:51.560+00:00] [INFO] [eth1::eth1_chain] started Eth1 block download task
[2024-01-30T00:30:56.562+00:00] [INFO] [eth1::eth1_chain] started Eth1 block download task
[2024-01-30T00:31:01.564+00:00] [INFO] [eth1::eth1_chain] started Eth1 block download task
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.