diff --git a/accounts/keystore/keystore.go b/accounts/keystore/keystore.go index bf2db1556..c61fd91bf 100644 --- a/accounts/keystore/keystore.go +++ b/accounts/keystore/keystore.go @@ -237,7 +237,7 @@ func (ks *KeyStore) Delete(a accounts.Account, passphrase string) error { // Decrypting the key isn't really necessary, but we do // it anyway to check the password and zero out the key // immediately afterwards. - a, key, err := ks.getDecryptedKey(a, passphrase) + a, key, err := ks.GetDecryptedKey(a, passphrase) if key != nil { zeroKey(key.PrivateKey) } @@ -291,7 +291,7 @@ func (ks *KeyStore) SignTx(a accounts.Account, tx *types.Transaction, chainID *b // can be decrypted with the given passphrase. The produced signature is in the // [R || S || V] format where V is 0 or 1. func (ks *KeyStore) SignHashWithPassphrase(a accounts.Account, passphrase string, hash []byte) (signature []byte, err error) { - _, key, err := ks.getDecryptedKey(a, passphrase) + _, key, err := ks.GetDecryptedKey(a, passphrase) if err != nil { return nil, err } @@ -302,7 +302,7 @@ func (ks *KeyStore) SignHashWithPassphrase(a accounts.Account, passphrase string // SignTxWithPassphrase signs the transaction if the private key matching the // given address can be decrypted with the given passphrase. func (ks *KeyStore) SignTxWithPassphrase(a accounts.Account, passphrase string, tx *types.Transaction, chainID *big.Int) (*types.Transaction, error) { - _, key, err := ks.getDecryptedKey(a, passphrase) + _, key, err := ks.GetDecryptedKey(a, passphrase) if err != nil { return nil, err } @@ -340,7 +340,7 @@ func (ks *KeyStore) Lock(addr common.Address) error { // shortens the active unlock timeout. If the address was previously unlocked // indefinitely the timeout is not altered. func (ks *KeyStore) TimedUnlock(a accounts.Account, passphrase string, timeout time.Duration) error { - a, key, err := ks.getDecryptedKey(a, passphrase) + a, key, err := ks.GetDecryptedKey(a, passphrase) if err != nil { return err } @@ -377,7 +377,8 @@ func (ks *KeyStore) Find(a accounts.Account) (accounts.Account, error) { return a, err } -func (ks *KeyStore) getDecryptedKey(a accounts.Account, auth string) (accounts.Account, *Key, error) { +// GetDecryptedKey decrypt and return the key for the account. +func (ks *KeyStore) GetDecryptedKey(a accounts.Account, auth string) (accounts.Account, *Key, error) { a, err := ks.Find(a) if err != nil { return a, nil, err @@ -422,7 +423,7 @@ func (ks *KeyStore) NewAccount(passphrase string) (accounts.Account, error) { // Export exports as a JSON key, encrypted with newPassphrase. func (ks *KeyStore) Export(a accounts.Account, passphrase, newPassphrase string) (keyJSON []byte, err error) { - _, key, err := ks.getDecryptedKey(a, passphrase) + _, key, err := ks.GetDecryptedKey(a, passphrase) if err != nil { return nil, err } @@ -468,7 +469,7 @@ func (ks *KeyStore) importKey(key *Key, passphrase string) (accounts.Account, er // Update changes the passphrase of an existing account. func (ks *KeyStore) Update(a accounts.Account, passphrase, newPassphrase string) error { - a, key, err := ks.getDecryptedKey(a, passphrase) + a, key, err := ks.GetDecryptedKey(a, passphrase) if err != nil { return err } diff --git a/api/proto/message/message.pb.go b/api/proto/message/message.pb.go index 853a34e46..a399cf042 100644 --- a/api/proto/message/message.pb.go +++ b/api/proto/message/message.pb.go @@ -523,9 +523,10 @@ func (m *StakingRequest) GetNodeId() string { type ConsensusRequest struct { ViewId uint32 `protobuf:"varint,1,opt,name=view_id,json=viewId,proto3" json:"view_id,omitempty"` BlockNum uint64 `protobuf:"varint,2,opt,name=block_num,json=blockNum,proto3" json:"block_num,omitempty"` - BlockHash []byte `protobuf:"bytes,3,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` - SenderPubkey []byte `protobuf:"bytes,4,opt,name=sender_pubkey,json=senderPubkey,proto3" json:"sender_pubkey,omitempty"` - Payload []byte `protobuf:"bytes,5,opt,name=payload,proto3" json:"payload,omitempty"` + ShardId uint32 `protobuf:"varint,3,opt,name=shard_id,json=shardId,proto3" json:"shard_id,omitempty"` + BlockHash []byte `protobuf:"bytes,4,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` + SenderPubkey []byte `protobuf:"bytes,5,opt,name=sender_pubkey,json=senderPubkey,proto3" json:"sender_pubkey,omitempty"` + Payload []byte `protobuf:"bytes,6,opt,name=payload,proto3" json:"payload,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -570,6 +571,13 @@ func (m *ConsensusRequest) GetBlockNum() uint64 { return 0 } +func (m *ConsensusRequest) GetShardId() uint32 { + if m != nil { + return m.ShardId + } + return 0 +} + func (m *ConsensusRequest) GetBlockHash() []byte { if m != nil { return m.BlockHash @@ -592,9 +600,10 @@ func (m *ConsensusRequest) GetPayload() []byte { } type DrandRequest struct { - SenderPubkey []byte `protobuf:"bytes,1,opt,name=sender_pubkey,json=senderPubkey,proto3" json:"sender_pubkey,omitempty"` - BlockHash []byte `protobuf:"bytes,2,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` - Payload []byte `protobuf:"bytes,3,opt,name=payload,proto3" json:"payload,omitempty"` + ShardId uint32 `protobuf:"varint,1,opt,name=shard_id,json=shardId,proto3" json:"shard_id,omitempty"` + SenderPubkey []byte `protobuf:"bytes,2,opt,name=sender_pubkey,json=senderPubkey,proto3" json:"sender_pubkey,omitempty"` + BlockHash []byte `protobuf:"bytes,3,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` + Payload []byte `protobuf:"bytes,4,opt,name=payload,proto3" json:"payload,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -625,6 +634,13 @@ func (m *DrandRequest) XXX_DiscardUnknown() { var xxx_messageInfo_DrandRequest proto.InternalMessageInfo +func (m *DrandRequest) GetShardId() uint32 { + if m != nil { + return m.ShardId + } + return 0 +} + func (m *DrandRequest) GetSenderPubkey() []byte { if m != nil { return m.SenderPubkey @@ -649,17 +665,18 @@ func (m *DrandRequest) GetPayload() []byte { type ViewChangeRequest struct { ViewId uint32 `protobuf:"varint,1,opt,name=view_id,json=viewId,proto3" json:"view_id,omitempty"` BlockNum uint64 `protobuf:"varint,2,opt,name=block_num,json=blockNum,proto3" json:"block_num,omitempty"` - SenderPubkey []byte `protobuf:"bytes,3,opt,name=sender_pubkey,json=senderPubkey,proto3" json:"sender_pubkey,omitempty"` - LeaderPubkey []byte `protobuf:"bytes,4,opt,name=leader_pubkey,json=leaderPubkey,proto3" json:"leader_pubkey,omitempty"` - Payload []byte `protobuf:"bytes,5,opt,name=payload,proto3" json:"payload,omitempty"` - ViewchangeSig []byte `protobuf:"bytes,6,opt,name=viewchange_sig,json=viewchangeSig,proto3" json:"viewchange_sig,omitempty"` - ViewidSig []byte `protobuf:"bytes,7,opt,name=viewid_sig,json=viewidSig,proto3" json:"viewid_sig,omitempty"` + ShardId uint32 `protobuf:"varint,3,opt,name=shard_id,json=shardId,proto3" json:"shard_id,omitempty"` + SenderPubkey []byte `protobuf:"bytes,4,opt,name=sender_pubkey,json=senderPubkey,proto3" json:"sender_pubkey,omitempty"` + LeaderPubkey []byte `protobuf:"bytes,5,opt,name=leader_pubkey,json=leaderPubkey,proto3" json:"leader_pubkey,omitempty"` + Payload []byte `protobuf:"bytes,6,opt,name=payload,proto3" json:"payload,omitempty"` + ViewchangeSig []byte `protobuf:"bytes,7,opt,name=viewchange_sig,json=viewchangeSig,proto3" json:"viewchange_sig,omitempty"` + ViewidSig []byte `protobuf:"bytes,8,opt,name=viewid_sig,json=viewidSig,proto3" json:"viewid_sig,omitempty"` // below is for newview message only // only need 1 valid m1 type message which is in payload - M2Aggsigs []byte `protobuf:"bytes,8,opt,name=m2_aggsigs,json=m2Aggsigs,proto3" json:"m2_aggsigs,omitempty"` - M2Bitmap []byte `protobuf:"bytes,9,opt,name=m2_bitmap,json=m2Bitmap,proto3" json:"m2_bitmap,omitempty"` - M3Aggsigs []byte `protobuf:"bytes,10,opt,name=m3_aggsigs,json=m3Aggsigs,proto3" json:"m3_aggsigs,omitempty"` - M3Bitmap []byte `protobuf:"bytes,11,opt,name=m3_bitmap,json=m3Bitmap,proto3" json:"m3_bitmap,omitempty"` + M2Aggsigs []byte `protobuf:"bytes,9,opt,name=m2_aggsigs,json=m2Aggsigs,proto3" json:"m2_aggsigs,omitempty"` + M2Bitmap []byte `protobuf:"bytes,10,opt,name=m2_bitmap,json=m2Bitmap,proto3" json:"m2_bitmap,omitempty"` + M3Aggsigs []byte `protobuf:"bytes,11,opt,name=m3_aggsigs,json=m3Aggsigs,proto3" json:"m3_aggsigs,omitempty"` + M3Bitmap []byte `protobuf:"bytes,12,opt,name=m3_bitmap,json=m3Bitmap,proto3" json:"m3_bitmap,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -704,6 +721,13 @@ func (m *ViewChangeRequest) GetBlockNum() uint64 { return 0 } +func (m *ViewChangeRequest) GetShardId() uint32 { + if m != nil { + return m.ShardId + } + return 0 +} + func (m *ViewChangeRequest) GetSenderPubkey() []byte { if m != nil { return m.SenderPubkey @@ -784,65 +808,66 @@ func init() { func init() { proto.RegisterFile("message.proto", fileDescriptor_33c57e4bae7b9afd) } var fileDescriptor_33c57e4bae7b9afd = []byte{ - // 914 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x95, 0xcd, 0x8e, 0xe2, 0x46, - 0x10, 0xc7, 0x31, 0x30, 0x18, 0x97, 0x0d, 0xd3, 0xdb, 0x49, 0x76, 0x9d, 0xc9, 0x46, 0x19, 0xb1, - 0x8a, 0x34, 0x5a, 0x29, 0xa3, 0x15, 0x1c, 0xa2, 0x48, 0xb9, 0x30, 0xa6, 0xb5, 0x58, 0x33, 0x63, - 0x48, 0x63, 0x76, 0x94, 0x93, 0x65, 0xa0, 0xc5, 0x58, 0x63, 0x6c, 0xe2, 0x36, 0xb3, 0xe2, 0x85, - 0x72, 0xc9, 0x3d, 0xe7, 0xe4, 0x79, 0xf2, 0x12, 0x51, 0xb7, 0x6d, 0xcc, 0xc7, 0x46, 0x91, 0x72, - 0xc8, 0x8d, 0xfa, 0x57, 0xfd, 0xaa, 0xab, 0xcb, 0x5d, 0x05, 0xb4, 0x56, 0x8c, 0x73, 0x7f, 0xc9, - 0xae, 0xd7, 0x49, 0x9c, 0xc6, 0x58, 0xcd, 0xcd, 0xce, 0xef, 0x35, 0x50, 0xef, 0xb3, 0xdf, 0xf8, - 0x7b, 0x30, 0x38, 0x4b, 0x9e, 0x83, 0x39, 0xf3, 0xd2, 0xed, 0x9a, 0x99, 0xca, 0xa5, 0x72, 0xd5, - 0xee, 0x7e, 0x7e, 0x5d, 0xa0, 0x93, 0xcc, 0xe9, 0x6e, 0xd7, 0x8c, 0xea, 0xbc, 0x34, 0xf0, 0x15, - 0xd4, 0x25, 0x50, 0x3d, 0x02, 0xf2, 0xc4, 0x12, 0x90, 0x11, 0xf8, 0x35, 0x68, 0x3c, 0x58, 0x46, - 0x7e, 0xba, 0x49, 0x98, 0x59, 0xbb, 0x54, 0xae, 0x0c, 0x5a, 0x0a, 0xb8, 0x07, 0x2a, 0x4f, 0xfd, - 0xa7, 0x20, 0x5a, 0x9a, 0xf5, 0x4b, 0xe5, 0x4a, 0xef, 0xbe, 0x2a, 0xcf, 0xce, 0x74, 0xca, 0x7e, - 0xd9, 0x30, 0x9e, 0x0e, 0x2b, 0xb4, 0x88, 0xc4, 0x3f, 0x80, 0x36, 0x8f, 0x23, 0xce, 0x22, 0xbe, - 0xe1, 0xe6, 0x99, 0xc4, 0xbe, 0xdc, 0x61, 0x56, 0xe1, 0x29, 0xc1, 0x32, 0x1a, 0x7f, 0x07, 0x67, - 0x8b, 0xc4, 0x8f, 0x16, 0x66, 0x43, 0x62, 0x5f, 0xec, 0xb0, 0x81, 0x50, 0x4b, 0x24, 0x8b, 0xc2, - 0x3f, 0x02, 0x3c, 0x07, 0xec, 0xe3, 0xfc, 0xd1, 0x8f, 0x96, 0xcc, 0x54, 0x25, 0x73, 0xb1, 0x63, - 0x3e, 0x04, 0xec, 0xa3, 0x25, 0x5d, 0x25, 0xb8, 0x17, 0x8f, 0x6f, 0xe0, 0x3c, 0x8c, 0xd3, 0x94, - 0x25, 0x5b, 0x2f, 0xc9, 0x02, 0xcc, 0xe6, 0xd1, 0x25, 0xef, 0x32, 0x7f, 0xc9, 0xb7, 0xc3, 0x03, - 0xe5, 0x46, 0x03, 0x35, 0x67, 0x3b, 0x7f, 0x28, 0xd0, 0xa4, 0x8c, 0xaf, 0xc5, 0x65, 0xfe, 0x8f, - 0x2f, 0x47, 0x00, 0x95, 0xe5, 0x67, 0xc7, 0xca, 0x0f, 0xa8, 0x77, 0xcd, 0xd3, 0xfa, 0x33, 0xff, - 0xb0, 0x42, 0xcf, 0xc3, 0x43, 0xe9, 0x06, 0xa0, 0x59, 0xe0, 0x9d, 0xf7, 0x70, 0x7e, 0x44, 0x60, - 0x13, 0xd4, 0x75, 0xe8, 0x6f, 0x59, 0xc2, 0xcd, 0xea, 0x65, 0xed, 0x4a, 0xa3, 0x85, 0x89, 0x2f, - 0xa0, 0x39, 0xf3, 0x43, 0x3f, 0x9a, 0x33, 0x6e, 0xd6, 0xa4, 0x6b, 0x67, 0x77, 0x7e, 0x53, 0xa0, - 0x7d, 0xd8, 0x3b, 0xfc, 0x2e, 0xbf, 0x58, 0xd6, 0x89, 0xd7, 0xff, 0xd0, 0xe2, 0xeb, 0xbd, 0x0b, - 0x7e, 0x03, 0xfa, 0x3a, 0x09, 0x9e, 0xfd, 0x94, 0x79, 0x4f, 0x6c, 0x2b, 0x3b, 0xa2, 0x51, 0xc8, - 0xa5, 0x5b, 0xb6, 0xc5, 0x2f, 0xa1, 0xe1, 0xaf, 0xe2, 0x4d, 0x94, 0xca, 0x7b, 0xd7, 0x68, 0x6e, - 0x75, 0xae, 0xa1, 0x2e, 0x7b, 0xa9, 0xc1, 0x19, 0x71, 0x5c, 0x42, 0x51, 0x05, 0x03, 0x34, 0x28, - 0x99, 0x4c, 0xef, 0x5c, 0xa4, 0xe0, 0x73, 0xd0, 0xc7, 0xb6, 0x75, 0xeb, 0x3d, 0xd8, 0x8e, 0x43, - 0x28, 0xaa, 0x76, 0x6e, 0xa1, 0x7d, 0xf8, 0x9a, 0xf1, 0x25, 0xe8, 0x69, 0xe2, 0x47, 0xdc, 0x9f, - 0xa7, 0x41, 0x1c, 0xc9, 0x9a, 0x0d, 0xba, 0x2f, 0xe1, 0x57, 0xa0, 0x46, 0xf1, 0x82, 0x79, 0xc1, - 0x22, 0x2f, 0xac, 0x21, 0x4c, 0x7b, 0xd1, 0xf9, 0x55, 0x01, 0x74, 0xfc, 0xc8, 0x45, 0xb4, 0x78, - 0x78, 0x22, 0x5a, 0xe4, 0x6a, 0xd1, 0x86, 0x30, 0xed, 0x05, 0xfe, 0x0a, 0xb4, 0x59, 0x18, 0xcf, - 0x9f, 0xbc, 0x68, 0xb3, 0x92, 0x89, 0xea, 0xb4, 0x29, 0x05, 0x67, 0xb3, 0xc2, 0x5f, 0x03, 0x64, - 0xce, 0x47, 0x9f, 0x3f, 0x16, 0xc3, 0x29, 0x95, 0xa1, 0xcf, 0x1f, 0xf1, 0x1b, 0x68, 0x71, 0x16, - 0x2d, 0x58, 0xe2, 0xad, 0x37, 0x33, 0xd1, 0xa1, 0xba, 0x8c, 0x30, 0x32, 0x71, 0x2c, 0x35, 0xf9, - 0xfd, 0xfc, 0x6d, 0x18, 0xfb, 0x0b, 0x39, 0x8a, 0x06, 0x2d, 0xcc, 0x4e, 0x08, 0xc6, 0xfe, 0x54, - 0x9d, 0xa6, 0x53, 0x3e, 0x91, 0xee, 0xb0, 0xa4, 0xea, 0x71, 0x49, 0x7b, 0xa7, 0xd5, 0x0e, 0x4f, - 0xfb, 0xab, 0x0a, 0x2f, 0x4e, 0x06, 0xf2, 0x3f, 0xf6, 0xe5, 0xa4, 0xd2, 0xda, 0x27, 0x2a, 0x7d, - 0x03, 0xad, 0x90, 0xf9, 0xa7, 0xdd, 0xc9, 0xc4, 0x7f, 0xeb, 0x0e, 0xfe, 0x16, 0xda, 0xe5, 0xaa, - 0xf0, 0x78, 0xb0, 0x94, 0x2b, 0xc9, 0xa0, 0xad, 0x52, 0x9d, 0x04, 0x4b, 0xd1, 0x0f, 0x21, 0x04, - 0x0b, 0x19, 0xa2, 0x66, 0xfd, 0xc8, 0x94, 0xdc, 0xbd, 0xea, 0x7a, 0xfe, 0x72, 0xc9, 0x83, 0x25, - 0x97, 0xdb, 0xc5, 0xa0, 0xda, 0xaa, 0xdb, 0xcf, 0x04, 0x71, 0xcb, 0x55, 0xd7, 0x9b, 0x05, 0xe9, - 0xca, 0x5f, 0x9b, 0x9a, 0xf4, 0x36, 0x57, 0xdd, 0x1b, 0x69, 0x4b, 0xb6, 0xb7, 0x63, 0x21, 0x67, - 0x7b, 0xfb, 0x6c, 0xaf, 0x60, 0xf5, 0x9c, 0xed, 0x65, 0xec, 0xdb, 0x21, 0xe8, 0x7b, 0x1b, 0x06, - 0xb7, 0x40, 0xb3, 0x46, 0xce, 0x84, 0x38, 0x93, 0xe9, 0x04, 0x55, 0xb0, 0x0e, 0xea, 0xc4, 0xed, - 0xdf, 0xda, 0xce, 0x7b, 0xa4, 0x88, 0x21, 0x19, 0xd0, 0xbe, 0x33, 0x40, 0x55, 0x8c, 0xa1, 0x6d, - 0xdd, 0xd9, 0xc4, 0x71, 0xbd, 0xc9, 0x74, 0x3c, 0x1e, 0x51, 0x17, 0xd5, 0xde, 0xfe, 0xa9, 0x80, - 0xbe, 0xb7, 0x7b, 0xf0, 0x05, 0xbc, 0x74, 0xc8, 0x83, 0x33, 0x1a, 0x10, 0xef, 0x86, 0xf4, 0xad, - 0x91, 0xe3, 0x15, 0xa9, 0x2a, 0xd8, 0x80, 0x66, 0xdf, 0x71, 0x46, 0x53, 0xc7, 0x22, 0x48, 0x11, - 0xa7, 0x8c, 0x29, 0x19, 0xf7, 0x29, 0x41, 0x55, 0xe1, 0xca, 0x8d, 0x01, 0xaa, 0x89, 0x69, 0xb4, - 0x46, 0xf7, 0xf7, 0xb6, 0x8b, 0xea, 0x59, 0x6d, 0xe2, 0xb7, 0x4b, 0x06, 0xe8, 0x0c, 0xb7, 0x01, - 0x3e, 0xd8, 0xe4, 0xc1, 0x1a, 0xf6, 0x9d, 0xf7, 0x04, 0x35, 0x44, 0x16, 0x87, 0x3c, 0x08, 0x09, - 0xa9, 0xc2, 0x29, 0x6b, 0xf5, 0x6c, 0xc7, 0x76, 0x11, 0x60, 0x04, 0x46, 0x66, 0xe7, 0xd9, 0x74, - 0xfc, 0x19, 0x9c, 0xdf, 0x8d, 0x5c, 0x97, 0xd0, 0x9f, 0x3d, 0x4a, 0x7e, 0x9a, 0x92, 0x89, 0x8b, - 0x8c, 0x6e, 0x1f, 0x5a, 0x56, 0x18, 0xb0, 0x28, 0xcd, 0x7b, 0x82, 0xdf, 0x81, 0x3a, 0x4e, 0xe2, - 0x39, 0xe3, 0x1c, 0xa3, 0xe3, 0x0d, 0x7b, 0xf1, 0x62, 0xa7, 0x14, 0x4b, 0xb0, 0x53, 0x99, 0x35, - 0xe4, 0xbf, 0x74, 0xef, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0x27, 0x52, 0x45, 0x7b, 0xb6, 0x07, - 0x00, 0x00, + // 934 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x95, 0xdf, 0x6e, 0xe2, 0x46, + 0x14, 0xc6, 0x31, 0x10, 0x0c, 0xc7, 0x86, 0xcc, 0x4e, 0xdb, 0x5d, 0x6f, 0xba, 0x55, 0x23, 0x56, + 0x95, 0xa2, 0x95, 0x1a, 0xad, 0xe0, 0xa2, 0xaa, 0xd4, 0x1b, 0x02, 0xa3, 0xc4, 0x4a, 0x62, 0xe8, + 0xe0, 0x6c, 0xd4, 0x2b, 0x6b, 0x82, 0x47, 0xc4, 0x0a, 0xd8, 0xd4, 0x63, 0xb2, 0xe2, 0x05, 0xda, + 0x87, 0xe9, 0x7d, 0xaf, 0xbb, 0x6f, 0x56, 0xcd, 0x8c, 0xc1, 0xfc, 0xd9, 0xaa, 0x37, 0x55, 0xef, + 0x38, 0xdf, 0x39, 0xbf, 0x99, 0x73, 0x3e, 0xcf, 0x0c, 0xd0, 0x9c, 0x73, 0x21, 0xd8, 0x94, 0x9f, + 0x2f, 0xd2, 0x24, 0x4b, 0xb0, 0x99, 0x87, 0xed, 0x3f, 0x2b, 0x60, 0xde, 0xea, 0xdf, 0xf8, 0x07, + 0xb0, 0x05, 0x4f, 0x9f, 0xa3, 0x09, 0x0f, 0xb2, 0xd5, 0x82, 0x3b, 0xc6, 0xa9, 0x71, 0xd6, 0xea, + 0x7c, 0x79, 0xbe, 0x46, 0xc7, 0x3a, 0xe9, 0xaf, 0x16, 0x9c, 0x5a, 0xa2, 0x08, 0xf0, 0x19, 0x54, + 0x15, 0x50, 0xde, 0x03, 0xf2, 0x85, 0x15, 0xa0, 0x2a, 0xf0, 0x1b, 0x68, 0x88, 0x68, 0x1a, 0xb3, + 0x6c, 0x99, 0x72, 0xa7, 0x72, 0x6a, 0x9c, 0xd9, 0xb4, 0x10, 0x70, 0x17, 0x4c, 0x91, 0xb1, 0xa7, + 0x28, 0x9e, 0x3a, 0xd5, 0x53, 0xe3, 0xcc, 0xea, 0xbc, 0x2a, 0xf6, 0xd6, 0x3a, 0xe5, 0xbf, 0x2e, + 0xb9, 0xc8, 0xae, 0x4a, 0x74, 0x5d, 0x89, 0x7f, 0x84, 0xc6, 0x24, 0x89, 0x05, 0x8f, 0xc5, 0x52, + 0x38, 0x47, 0x0a, 0x7b, 0xbd, 0xc1, 0xfa, 0xeb, 0x4c, 0x01, 0x16, 0xd5, 0xf8, 0x7b, 0x38, 0x0a, + 0x53, 0x16, 0x87, 0x4e, 0x4d, 0x61, 0x5f, 0x6d, 0xb0, 0x81, 0x54, 0x0b, 0x44, 0x57, 0xe1, 0x9f, + 0x00, 0x9e, 0x23, 0xfe, 0x71, 0xf2, 0xc8, 0xe2, 0x29, 0x77, 0x4c, 0xc5, 0x9c, 0x6c, 0x98, 0x0f, + 0x11, 0xff, 0xd8, 0x57, 0xa9, 0x02, 0xdc, 0xaa, 0xc7, 0x17, 0x70, 0x3c, 0x4b, 0xb2, 0x8c, 0xa7, + 0xab, 0x20, 0xd5, 0x05, 0x4e, 0x7d, 0x6f, 0xc8, 0x1b, 0x9d, 0x2f, 0xf8, 0xd6, 0x6c, 0x47, 0xb9, + 0x68, 0x80, 0x99, 0xb3, 0xed, 0xbf, 0x0c, 0xa8, 0x53, 0x2e, 0x16, 0x72, 0x98, 0xff, 0xe3, 0xcb, + 0x11, 0x40, 0x45, 0xfb, 0x7a, 0x5b, 0xf5, 0x01, 0xad, 0x8e, 0x73, 0xd8, 0xbf, 0xce, 0x5f, 0x95, + 0xe8, 0xf1, 0x6c, 0x57, 0xba, 0x00, 0xa8, 0xaf, 0xf1, 0xf6, 0x25, 0x1c, 0xef, 0x11, 0xd8, 0x01, + 0x73, 0x31, 0x63, 0x2b, 0x9e, 0x0a, 0xa7, 0x7c, 0x5a, 0x39, 0x6b, 0xd0, 0x75, 0x88, 0x4f, 0xa0, + 0xfe, 0xc0, 0x66, 0x2c, 0x9e, 0x70, 0xe1, 0x54, 0x54, 0x6a, 0x13, 0xb7, 0xff, 0x30, 0xa0, 0xb5, + 0xeb, 0x1d, 0x7e, 0x9f, 0x0f, 0xa6, 0x9d, 0x78, 0xf3, 0x0f, 0x16, 0x9f, 0x6f, 0x0d, 0xf8, 0x2d, + 0x58, 0x8b, 0x34, 0x7a, 0x66, 0x19, 0x0f, 0x9e, 0xf8, 0x4a, 0x39, 0xd2, 0xa0, 0x90, 0x4b, 0xd7, + 0x7c, 0x85, 0x5f, 0x42, 0x8d, 0xcd, 0x93, 0x65, 0x9c, 0xa9, 0xb9, 0x2b, 0x34, 0x8f, 0xda, 0xe7, + 0x50, 0x55, 0x5e, 0x36, 0xe0, 0x88, 0x78, 0x3e, 0xa1, 0xa8, 0x84, 0x01, 0x6a, 0x94, 0x8c, 0xef, + 0x6e, 0x7c, 0x64, 0xe0, 0x63, 0xb0, 0x46, 0x6e, 0xff, 0x3a, 0xb8, 0x77, 0x3d, 0x8f, 0x50, 0x54, + 0x6e, 0x5f, 0x43, 0x6b, 0xf7, 0x34, 0xe3, 0x53, 0xb0, 0xb2, 0x94, 0xc5, 0x82, 0x4d, 0xb2, 0x28, + 0x89, 0x55, 0xcf, 0x36, 0xdd, 0x96, 0xf0, 0x2b, 0x30, 0xe3, 0x24, 0xe4, 0x41, 0x14, 0xe6, 0x8d, + 0xd5, 0x64, 0xe8, 0x86, 0xed, 0x4f, 0x06, 0xa0, 0xfd, 0x43, 0x2e, 0xab, 0xe5, 0xc1, 0x93, 0xd5, + 0x72, 0xad, 0x26, 0xad, 0xc9, 0xd0, 0x0d, 0xf1, 0xd7, 0xd0, 0x78, 0x98, 0x25, 0x93, 0xa7, 0x20, + 0x5e, 0xce, 0xd5, 0x42, 0x55, 0x5a, 0x57, 0x82, 0xb7, 0x9c, 0xe3, 0xd7, 0x50, 0x17, 0x8f, 0x2c, + 0x0d, 0x25, 0x56, 0x51, 0x98, 0xa9, 0x62, 0x37, 0xc4, 0xdf, 0x00, 0x68, 0xee, 0x91, 0x89, 0x47, + 0x75, 0x37, 0x6d, 0xaa, 0x57, 0xba, 0x62, 0xe2, 0x11, 0xbf, 0x85, 0xa6, 0xe0, 0x71, 0xc8, 0xd3, + 0x60, 0xb1, 0x7c, 0x90, 0xe6, 0x1d, 0xa9, 0x0a, 0x5b, 0x8b, 0x23, 0xa5, 0xa9, 0x4f, 0xcb, 0x56, + 0xb3, 0x84, 0xe9, 0xeb, 0x66, 0xd3, 0x75, 0xd8, 0xfe, 0xdd, 0x00, 0x7b, 0xfb, 0xc6, 0xed, 0x74, + 0x62, 0xec, 0x76, 0x72, 0xb0, 0x55, 0xf9, 0x33, 0x5b, 0xed, 0xb6, 0x5b, 0xd9, 0x6f, 0x77, 0xab, + 0x93, 0xea, 0x6e, 0x27, 0xbf, 0x55, 0xe0, 0xc5, 0xc1, 0x3d, 0xfe, 0xef, 0xed, 0x3c, 0x18, 0xa2, + 0xfa, 0x99, 0x21, 0xde, 0x42, 0x73, 0xc6, 0xd9, 0xa1, 0xa9, 0x5a, 0xfc, 0x37, 0x53, 0xf1, 0x77, + 0xd0, 0x2a, 0x1e, 0x9f, 0x40, 0x44, 0x53, 0xf5, 0x60, 0xd9, 0xb4, 0x59, 0xa8, 0xe3, 0x68, 0x2a, + 0xad, 0x92, 0x42, 0x14, 0xaa, 0x92, 0xba, 0xb6, 0x4a, 0x2b, 0x79, 0x7a, 0xde, 0x09, 0xd8, 0x74, + 0x2a, 0xa2, 0xa9, 0x70, 0x1a, 0x3a, 0x3d, 0xef, 0xf4, 0xb4, 0x20, 0x0d, 0x98, 0x77, 0x82, 0x87, + 0x28, 0x9b, 0xb3, 0x85, 0x03, 0x2a, 0x5b, 0x9f, 0x77, 0x2e, 0x54, 0xac, 0xd8, 0xee, 0x86, 0xb5, + 0x72, 0xb6, 0xbb, 0xcd, 0x76, 0xd7, 0xac, 0x9d, 0xb3, 0x5d, 0xcd, 0xbe, 0xbb, 0x02, 0x6b, 0xeb, + 0xcd, 0xc2, 0x4d, 0x68, 0xf4, 0x87, 0xde, 0x98, 0x78, 0xe3, 0xbb, 0x31, 0x2a, 0x61, 0x0b, 0xcc, + 0xb1, 0xdf, 0xbb, 0x76, 0xbd, 0x4b, 0x64, 0xc8, 0x6b, 0x37, 0xa0, 0x3d, 0x6f, 0x80, 0xca, 0x18, + 0x43, 0xab, 0x7f, 0xe3, 0x12, 0xcf, 0x0f, 0xc6, 0x77, 0xa3, 0xd1, 0x90, 0xfa, 0xa8, 0xf2, 0xee, + 0x93, 0x01, 0xd6, 0xd6, 0x6b, 0x86, 0x4f, 0xe0, 0xa5, 0x47, 0xee, 0xbd, 0xe1, 0x80, 0x04, 0x17, + 0xa4, 0xd7, 0x1f, 0x7a, 0xc1, 0x7a, 0xa9, 0x12, 0xb6, 0xa1, 0xde, 0xf3, 0xbc, 0xe1, 0x9d, 0xd7, + 0x27, 0xc8, 0x90, 0xbb, 0x8c, 0x28, 0x19, 0xf5, 0x28, 0x41, 0x65, 0x99, 0xca, 0x83, 0x01, 0xaa, + 0xc8, 0xfb, 0xdd, 0x1f, 0xde, 0xde, 0xba, 0x3e, 0xaa, 0xea, 0xde, 0xe4, 0x6f, 0x9f, 0x0c, 0xd0, + 0x11, 0x6e, 0x01, 0x7c, 0x70, 0xc9, 0x7d, 0xff, 0xaa, 0xe7, 0x5d, 0x12, 0x54, 0x93, 0xab, 0x78, + 0xe4, 0x5e, 0x4a, 0xc8, 0x94, 0x49, 0xd5, 0x6b, 0xe0, 0x7a, 0xae, 0x8f, 0x00, 0x23, 0xb0, 0x75, + 0x9c, 0xaf, 0x66, 0xe1, 0x2f, 0xe0, 0xf8, 0x66, 0xe8, 0xfb, 0x84, 0xfe, 0x12, 0x50, 0xf2, 0xf3, + 0x1d, 0x19, 0xfb, 0xc8, 0xee, 0xf4, 0xa0, 0xd9, 0x9f, 0x45, 0x3c, 0xce, 0x72, 0x4f, 0xf0, 0x7b, + 0x30, 0x47, 0x69, 0x32, 0xe1, 0x42, 0x60, 0xb4, 0xff, 0x66, 0x9f, 0xbc, 0xd8, 0x28, 0xeb, 0x67, + 0xb5, 0x5d, 0x7a, 0xa8, 0xa9, 0xff, 0xfd, 0xee, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xe3, 0x60, + 0x9a, 0xe1, 0x08, 0x08, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/api/proto/message/message.proto b/api/proto/message/message.proto index 4b2d79ae5..893a06a94 100644 --- a/api/proto/message/message.proto +++ b/api/proto/message/message.proto @@ -82,31 +82,34 @@ message StakingRequest { message ConsensusRequest { uint32 view_id = 1; uint64 block_num = 2; - bytes block_hash = 3; - bytes sender_pubkey = 4; - bytes payload = 5; + uint32 shard_id = 3; + bytes block_hash = 4; + bytes sender_pubkey = 5; + bytes payload = 6; } message DrandRequest { - bytes sender_pubkey = 1; - bytes block_hash = 2; - bytes payload = 3; + uint32 shard_id = 1; + bytes sender_pubkey = 2; + bytes block_hash = 3; + bytes payload = 4; } message ViewChangeRequest { uint32 view_id = 1; uint64 block_num = 2; - bytes sender_pubkey = 3; - bytes leader_pubkey = 4; - bytes payload = 5; // message payload: either m1 type or m2 type - bytes viewchange_sig = 6; // signature on payload - bytes viewid_sig = 7; // signature on view_id + uint32 shard_id = 3; + bytes sender_pubkey = 4; + bytes leader_pubkey = 5; + bytes payload = 6; // message payload: either m1 type or m2 type + bytes viewchange_sig = 7; // signature on payload + bytes viewid_sig = 8; // signature on view_id // below is for newview message only // only need 1 valid m1 type message which is in payload - bytes m2_aggsigs = 8; // m2: |nil| - bytes m2_bitmap = 9; - bytes m3_aggsigs = 10; // m3: |viewID| - bytes m3_bitmap= 11; + bytes m2_aggsigs = 9; // m2: |nil| + bytes m2_bitmap = 10; + bytes m3_aggsigs = 11; // m3: |viewID| + bytes m3_bitmap= 12; } diff --git a/api/service/syncing/syncing.go b/api/service/syncing/syncing.go index 4f81ad537..4d0f0d62e 100644 --- a/api/service/syncing/syncing.go +++ b/api/service/syncing/syncing.go @@ -476,6 +476,9 @@ func (ss *StateSync) updateBlockAndStatus(block *types.Block, bc *core.BlockChai _, err := bc.InsertChain([]*types.Block{block}) if err != nil { utils.GetLogInstance().Debug("Error adding new block to blockchain", "Error", err) + + utils.GetLogInstance().Debug("Rolling back current block!", "block", bc.CurrentBlock()) + bc.Rollback([]common.Hash{bc.CurrentBlock().Hash()}) return false } ss.syncMux.Lock() diff --git a/cmd/client/wallet/main.go b/cmd/client/wallet/main.go index 272b09d3d..2a4255122 100644 --- a/cmd/client/wallet/main.go +++ b/cmd/client/wallet/main.go @@ -2,6 +2,7 @@ package main import ( "encoding/base64" + "encoding/hex" "flag" "fmt" "io/ioutil" @@ -70,6 +71,10 @@ var ( exportCommand = flag.NewFlagSet("export", flag.ExitOnError) exportCommandAccountPtr = exportCommand.String("account", "", "The account to be exported") + // ExportPriKey subcommands + exportPriKeyCommand = flag.NewFlagSet("exportPriKey", flag.ExitOnError) + exportPriKeyCommandAccountPtr = exportPriKeyCommand.String("account", "", "The account whose private key to be exported") + // Account subcommands accountImportCommand = flag.NewFlagSet("import", flag.ExitOnError) accountImportPtr = accountImportCommand.String("privateKey", "", "Specify the private keyfile to import") @@ -87,8 +92,11 @@ var ( freeTokenCommand = flag.NewFlagSet("getFreeToken", flag.ExitOnError) freeTokenAddressPtr = freeTokenCommand.String("address", "", "Specify the account address to receive the free token") - balanceCommand = flag.NewFlagSet("getFreeToken", flag.ExitOnError) + balanceCommand = flag.NewFlagSet("balances", flag.ExitOnError) balanceAddressPtr = balanceCommand.String("address", "", "Specify the account address to check balance for") + + formatCommand = flag.NewFlagSet("format", flag.ExitOnError) + formatAddressPtr = formatCommand.String("address", "", "Specify the account address to display different encoding formats") ) var ( @@ -138,8 +146,12 @@ func main() { fmt.Println(" --pass - Passphrase of sender's private key") fmt.Println(" 8. export - Export account key to a new file") fmt.Println(" --account - Specify the account to export. Empty will export every key.") - fmt.Println(" 9. blsgen - Generate a bls key and store private key locally.") + fmt.Println(" 9. exportPriKey - Export account private key") + fmt.Println(" --account - Specify the account to export private key.") + fmt.Println(" 10. blsgen - Generate a bls key and store private key locally.") fmt.Println(" --nopass - The private key has no passphrase (for test only)") + fmt.Println(" 11. format - Shows different encoding formats of specific address") + fmt.Println(" --address - The address to display the different encoding formats for") os.Exit(1) } @@ -183,6 +195,8 @@ ARG: processListCommand() case "export": processExportCommand() + case "exportPriKey": + processExportPriKeyCommand() case "blsgen": processBlsgenCommand() case "removeAll": @@ -198,6 +212,8 @@ ARG: case "transfer": readProfile(profile) processTransferCommand() + case "format": + formatAddressCommand() default: fmt.Printf("Unknown action: %s\n", os.Args[1]) flag.PrintDefaults() @@ -312,6 +328,19 @@ func _exportAccount(account accounts.Account) { } } +func _exportPriKeyAccount(account accounts.Account) { + fmt.Printf("account: %s\n", common2.MustAddressToBech32(account.Address)) + fmt.Printf("URL: %s\n", account.URL) + pass := utils.AskForPassphrase("Original Passphrase: ") + + account, key, err := ks.GetDecryptedKey(account, pass) + if err != nil { + fmt.Printf("Failed to decrypt the account: %s \n", err) + } else { + fmt.Printf("Private key: %s \n", hex.EncodeToString(key.PrivateKey.D.Bytes())) + } +} + func processListCommand() { if err := listCommand.Parse(os.Args[2:]); err != nil { fmt.Println(ctxerror.New("failed to parse flags").WithCause(err)) @@ -334,12 +363,27 @@ func processExportCommand() { allAccounts := ks.Accounts() for _, account := range allAccounts { - if acc == "" || acc == common2.MustAddressToBech32(account.Address) { + if acc == "" || common2.ParseAddr(acc) == account.Address { _exportAccount(account) } } } +func processExportPriKeyCommand() { + if err := exportCommand.Parse(os.Args[2:]); err != nil { + fmt.Println(ctxerror.New("failed to parse flags").WithCause(err)) + return + } + acc := *exportCommandAccountPtr + + allAccounts := ks.Accounts() + for _, account := range allAccounts { + if acc == "" || common2.ParseAddr(acc) == account.Address { + _exportPriKeyAccount(account) + } + } +} + func processBlsgenCommand() { newCommand.Parse(os.Args[2:]) noPass := *newCommandNoPassPtr @@ -401,18 +445,42 @@ func processBalancesCommand() { fmt.Printf("Account %d:\n", i) fmt.Printf(" Address: %s\n", common2.MustAddressToBech32(account.Address)) for shardID, balanceNonce := range FetchBalance(account.Address) { - fmt.Printf(" Balance in Shard %d: %s, nonce: %v \n", shardID, convertBalanceIntoReadableFormat(balanceNonce.balance), balanceNonce.nonce) + if balanceNonce != nil { + fmt.Printf(" Balance in Shard %d: %s, nonce: %v \n", shardID, convertBalanceIntoReadableFormat(balanceNonce.balance), balanceNonce.nonce) + } else { + fmt.Printf(" Balance in Shard %d: connection failed", shardID) + } } } } else { address := common2.ParseAddr(*balanceAddressPtr) fmt.Printf("Account: %s:\n", common2.MustAddressToBech32(address)) for shardID, balanceNonce := range FetchBalance(address) { - fmt.Printf(" Balance in Shard %d: %s, nonce: %v \n", shardID, convertBalanceIntoReadableFormat(balanceNonce.balance), balanceNonce.nonce) + if balanceNonce != nil { + fmt.Printf(" Balance in Shard %d: %s, nonce: %v \n", shardID, convertBalanceIntoReadableFormat(balanceNonce.balance), balanceNonce.nonce) + } else { + fmt.Printf(" Balance in Shard %d: connection failed \n", shardID) + } } } } +func formatAddressCommand() { + if err := formatCommand.Parse(os.Args[2:]); err != nil { + fmt.Println(ctxerror.New("failed to parse flags").WithCause(err)) + return + } + + if *formatAddressPtr == "" { + fmt.Println("Please specify the --address to show formats for.") + } else { + address := common2.ParseAddr(*formatAddressPtr) + + fmt.Printf("account address in Bech32: %s\n", common2.MustAddressToBech32(address)) + fmt.Printf("account address in Base16 (deprecated): %s\n", address.Hex()) + } +} + func processGetFreeToken() { if err := freeTokenCommand.Parse(os.Args[2:]); err != nil { fmt.Println(ctxerror.New("Failed to parse flags").WithCause(err)) @@ -471,8 +539,8 @@ func processTransferCommand() { shardIDToAccountState := FetchBalance(senderAddress) - state, ok := shardIDToAccountState[uint32(shardID)] - if !ok { + state := shardIDToAccountState[shardID] + if state != nil { fmt.Printf("Failed connecting to the shard %d\n", shardID) return } @@ -563,34 +631,46 @@ func convertBalanceIntoReadableFormat(balance *big.Int) string { } // FetchBalance fetches account balance of specified address from the Harmony network -func FetchBalance(address common.Address) map[uint32]AccountState { - result := make(map[uint32]AccountState) - for i := 0; i < walletProfile.Shards; i++ { +func FetchBalance(address common.Address) []*AccountState { + result := []*AccountState{} + for shardID := 0; shardID < walletProfile.Shards; shardID++ { + // Fill in nil pointers for each shard; nil represent failed balance fetch. + result = append(result, nil) + } + + for shardID := 0; shardID < walletProfile.Shards; shardID++ { balance := big.NewInt(0) var nonce uint64 - result[uint32(i)] = AccountState{balance, 0} - - for retry := 0; retry < rpcRetry; retry++ { - server := walletProfile.RPCServer[i][rand.Intn(len(walletProfile.RPCServer[i]))] - client, err := clientService.NewClient(server.IP, server.Port) - if err != nil { - continue - } - - log.Debug("FetchBalance", "server", server) - response, err := client.GetBalance(address) - if err != nil { - log.Info("failed to get balance, retrying ...") - time.Sleep(200 * time.Millisecond) - continue + result[uint32(shardID)] = &AccountState{balance, 0} + + LOOP: + for j := 0; j < len(walletProfile.RPCServer[shardID]); j++ { + for retry := 0; retry < rpcRetry; retry++ { + server := walletProfile.RPCServer[shardID][j] + client, err := clientService.NewClient(server.IP, server.Port) + if err != nil { + continue + } + + log.Debug("FetchBalance", "server", server) + response, err := client.GetBalance(address) + if err != nil { + log.Info("failed to get balance, retrying ...") + time.Sleep(200 * time.Millisecond) + continue + } + log.Debug("FetchBalance", "response", response) + respBalance := big.NewInt(0) + respBalance.SetBytes(response.Balance) + if balance.Cmp(respBalance) < 0 { + balance.SetBytes(response.Balance) + nonce = response.Nonce + } + break LOOP } - log.Debug("FetchBalance", "response", response) - balance.SetBytes(response.Balance) - nonce = response.Nonce - break } - result[uint32(i)] = AccountState{balance, nonce} + result[shardID] = &AccountState{balance, nonce} } return result } diff --git a/cmd/harmony/main.go b/cmd/harmony/main.go index 1189a8ae8..e5b9de722 100644 --- a/cmd/harmony/main.go +++ b/cmd/harmony/main.go @@ -13,6 +13,7 @@ import ( "github.com/ethereum/go-ethereum/ethdb" "github.com/ethereum/go-ethereum/log" "github.com/harmony-one/bls/ffi/go/bls" + "github.com/harmony-one/harmony/accounts" "github.com/harmony-one/harmony/accounts/keystore" "github.com/harmony-one/harmony/consensus" @@ -23,7 +24,7 @@ import ( "github.com/harmony-one/harmony/internal/ctxerror" "github.com/harmony-one/harmony/internal/genesis" hmykey "github.com/harmony-one/harmony/internal/keystore" - memprofiling "github.com/harmony-one/harmony/internal/memprofiling" + "github.com/harmony-one/harmony/internal/memprofiling" "github.com/harmony-one/harmony/internal/profiler" "github.com/harmony-one/harmony/internal/shardchain" "github.com/harmony-one/harmony/internal/utils" @@ -95,6 +96,8 @@ var ( isGenesis = flag.Bool("is_genesis", true, "true means this node is a genesis node") // isArchival indicates this node is an archival node that will save and archive current blockchain isArchival = flag.Bool("is_archival", false, "true means this node is a archival node") + // delayCommit is the commit-delay timer, used by Harmony nodes + delayCommit = flag.String("delay_commit", "0ms", "how long to delay sending commit messages in consensus, ex: 500ms, 1s") //isNewNode indicates this node is a new node isNewNode = flag.Bool("is_newnode", false, "true means this node is a new node") shardID = flag.Int("shard_id", -1, "the shard ID of this node") @@ -108,6 +111,10 @@ var ( // -nopass is false by default. The keyfile must be encrypted. hmyNoPass = flag.Bool("nopass", false, "No passphrase for the key (testing only)") + // -pass takes on "pass:password", "env:var", "file:pathname", + // "fd:number", or "stdin" form. + // See “PASS PHRASE ARGUMENTS” section of openssl(1) for details. + hmyPass = flag.String("pass", "", "how to get passphrase for the key") stakingAccounts = flag.String("accounts", "", "account addresses of the node") @@ -194,7 +201,14 @@ func initSetup() { var myPass string if !*hmyNoPass { - myPass = utils.AskForPassphrase("Passphrase: ") + if *hmyPass == "" { + myPass = utils.AskForPassphrase("Passphrase: ") + } else if pass, err := utils.GetPassphraseFromSource(*hmyPass); err != nil { + fmt.Printf("Cannot read passphrase: %s\n", err) + os.Exit(3) + } else { + myPass = pass + } err := ks.Unlock(myAccount, myPass) if err != nil { fmt.Printf("Wrong Passphrase! Unable to unlock account key!\n") @@ -242,7 +256,7 @@ func createGlobalConfig() *nodeconfig.ConfigType { if *isGenesis { err := consensusPriKey.DeserializeHexStr(genesisAccount.BlsPriKey) if err != nil { - panic(fmt.Errorf("generate key error")) + panic(fmt.Errorf("Failed to parse BLS private key: %s, %s", genesisAccount.BlsPriKey, err)) } } else { // NewNode won't work @@ -263,7 +277,7 @@ func createGlobalConfig() *nodeconfig.ConfigType { // Consensus keys are the BLS12-381 keys used to sign consensus messages nodeConfig.ConsensusPriKey, nodeConfig.ConsensusPubKey = consensusPriKey, consensusPriKey.GetPublicKey() if nodeConfig.ConsensusPriKey == nil || nodeConfig.ConsensusPubKey == nil { - panic(fmt.Errorf("generate key error")) + panic(fmt.Errorf("Failed to initialize BLS keys: %s", consensusPriKey.SerializeToHexStr())) } // Key Setup ================= [End] @@ -303,6 +317,12 @@ func setUpConsensusAndNode(nodeConfig *nodeconfig.ConfigType) *node.Node { fmt.Fprintf(os.Stderr, "Error :%v \n", err) os.Exit(1) } + commitDelay, err := time.ParseDuration(*delayCommit) + if err != nil || commitDelay < 0 { + _, _ = fmt.Fprintf(os.Stderr, "invalid commit delay %#v", *delayCommit) + os.Exit(1) + } + currentConsensus.SetCommitDelay(commitDelay) currentConsensus.MinPeers = *minPeers if *disableViewChange { currentConsensus.DisableViewChangeForTestingOnly() diff --git a/consensus/consensus.go b/consensus/consensus.go index ded068736..59c1ca681 100644 --- a/consensus/consensus.go +++ b/consensus/consensus.go @@ -4,6 +4,7 @@ package consensus // consensus import ( "math/big" "sync" + "time" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" @@ -15,7 +16,6 @@ import ( "github.com/harmony-one/harmony/core/state" "github.com/harmony-one/harmony/core/types" bls_cosi "github.com/harmony-one/harmony/crypto/bls" - common2 "github.com/harmony-one/harmony/internal/common" nodeconfig "github.com/harmony-one/harmony/internal/configs/node" "github.com/harmony-one/harmony/internal/ctxerror" "github.com/harmony-one/harmony/internal/genesis" @@ -42,21 +42,27 @@ type Consensus struct { // channel to receive consensus message MsgChan chan []byte + // How long to delay sending commit messages. + delayCommit time.Duration + + // Consensus rounds whose commit phase finished + commitFinishChan chan uint32 + // 2 types of timeouts: normal and viewchange consensusTimeout map[TimeoutType]*utils.Timeout // Commits collected from validators. - prepareSigs map[common.Address]*bls.Sign // key is the validator's address - commitSigs map[common.Address]*bls.Sign // key is the validator's address + prepareSigs map[string]*bls.Sign // key is the bls public key + commitSigs map[string]*bls.Sign // key is the bls public key aggregatedPrepareSig *bls.Sign aggregatedCommitSig *bls.Sign prepareBitmap *bls_cosi.Mask commitBitmap *bls_cosi.Mask // Commits collected from view change - bhpSigs map[common.Address]*bls.Sign // bhpSigs: blockHashPreparedSigs is the signature on m1 type message - nilSigs map[common.Address]*bls.Sign // nilSigs: there is no prepared message when view change, it's signature on m2 type (i.e. nil) messages - viewIDSigs map[common.Address]*bls.Sign // viewIDSigs: every validator sign on |viewID|blockHash| in view changing message + bhpSigs map[string]*bls.Sign // bhpSigs: blockHashPreparedSigs is the signature on m1 type message + nilSigs map[string]*bls.Sign // nilSigs: there is no prepared message when view change, it's signature on m2 type (i.e. nil) messages + viewIDSigs map[string]*bls.Sign // viewIDSigs: every validator sign on |viewID|blockHash| in view changing message bhpBitmap *bls_cosi.Mask nilBitmap *bls_cosi.Mask viewIDBitmap *bls_cosi.Mask @@ -77,19 +83,19 @@ type Consensus struct { leader p2p.Peer // Public keys of the committee including leader and validators - PublicKeys []*bls.PublicKey - // The addresses of my committee - CommitteeAddresses map[common.Address]bool - pubKeyLock sync.Mutex + PublicKeys []*bls.PublicKey + CommitteePublicKeys map[string]bool + + pubKeyLock sync.Mutex // private/public keys of current node priKey *bls.SecretKey PubKey *bls.PublicKey + + SelfAddress common.Address // the publickey of leader LeaderPubKey *bls.PublicKey - // Leader or validator address in hex - SelfAddress common.Address // Consensus Id (View Id) - 4 byte viewID uint32 // TODO(chao): change it to uint64 or add overflow checking mechanism @@ -137,11 +143,19 @@ type Consensus struct { // Used to convey to the consensus main loop that block syncing has finished. syncReadyChan chan struct{} + // Used to convey to the consensus main loop that node is out of sync + syncNotReadyChan chan struct{} // If true, this consensus will not propose view change. disableViewChange bool } +// SetCommitDelay sets the commit message delay. If set to non-zero, +// validator delays commit message by the amount. +func (consensus *Consensus) SetCommitDelay(delay time.Duration) { + consensus.delayCommit = delay +} + // StakeInfoFinder returns the stake information finder instance this // consensus uses, e.g. for block reward distribution. func (consensus *Consensus) StakeInfoFinder() StakeInfoFinder { @@ -170,6 +184,11 @@ func (consensus *Consensus) BlocksSynchronized() { consensus.syncReadyChan <- struct{}{} } +// BlocksNotSynchronized lets the main loop know that block is not synchronized +func (consensus *Consensus) BlocksNotSynchronized() { + consensus.syncNotReadyChan <- struct{}{} +} + // WaitForSyncing informs the node syncing service to start syncing func (consensus *Consensus) WaitForSyncing() { <-consensus.blockNumLowChan @@ -180,6 +199,12 @@ func (consensus *Consensus) Quorum() int { return len(consensus.PublicKeys)*2/3 + 1 } +// RewardThreshold returns the threshold to stop accepting commit messages +// when leader receives enough signatures for block reward +func (consensus *Consensus) RewardThreshold() int { + return len(consensus.PublicKeys) * 9 / 10 +} + // StakeInfoFinder finds the staking account for the given consensus key. type StakeInfoFinder interface { // FindStakeInfoByNodeKey returns a list of staking information matching @@ -214,14 +239,13 @@ func New(host p2p.Host, ShardID uint32, leader p2p.Peer, blsPriKey *bls.SecretKe nodeconfig.GetDefaultConfig().SetIsLeader(false) } - consensus.prepareSigs = map[common.Address]*bls.Sign{} - consensus.commitSigs = map[common.Address]*bls.Sign{} - consensus.CommitteeAddresses = make(map[common.Address]bool) + consensus.prepareSigs = map[string]*bls.Sign{} + consensus.commitSigs = map[string]*bls.Sign{} + + consensus.CommitteePublicKeys = make(map[string]bool) - consensus.validators.Store(common2.MustAddressToBech32(utils.GetBlsAddress(leader.ConsensusPubKey)), leader) + consensus.validators.Store(leader.ConsensusPubKey.SerializeToHexStr(), leader) - // For now use socket address as ID - // TODO: populate Id derived from address consensus.SelfAddress = utils.GetBlsAddress(selfPeer.ConsensusPubKey) if blsPriKey != nil { @@ -237,6 +261,8 @@ func New(host p2p.Host, ShardID uint32, leader p2p.Peer, blsPriKey *bls.SecretKe consensus.MsgChan = make(chan []byte) consensus.syncReadyChan = make(chan struct{}) + consensus.syncNotReadyChan = make(chan struct{}) + consensus.commitFinishChan = make(chan uint32) consensus.ReadySignal = make(chan struct{}) if nodeconfig.GetDefaultConfig().IsLeader() { diff --git a/consensus/consensus_leader_msg_test.go b/consensus/consensus_leader_msg_test.go index 6714efb34..f0a111f48 100644 --- a/consensus/consensus_leader_msg_test.go +++ b/consensus/consensus_leader_msg_test.go @@ -3,8 +3,6 @@ package consensus import ( "testing" - "github.com/ethereum/go-ethereum/common" - "github.com/harmony-one/harmony/crypto/bls" "github.com/harmony-one/harmony/internal/ctxerror" @@ -61,8 +59,8 @@ func TestConstructPreparedMessage(test *testing.T) { consensus.blockHash = [32]byte{} message := "test string" - consensus.prepareSigs[common.Address{}] = leaderPriKey.Sign(message) - consensus.prepareSigs[common.Address{}] = validatorPriKey.Sign(message) + consensus.prepareSigs[leaderPubKey.SerializeToHexStr()] = leaderPriKey.Sign(message) + consensus.prepareSigs[validatorPubKey.SerializeToHexStr()] = validatorPriKey.Sign(message) // According to RJ these failures are benign. if err := consensus.prepareBitmap.SetKey(leaderPubKey, true); err != nil { test.Log(ctxerror.New("prepareBitmap.SetKey").WithCause(err)) diff --git a/consensus/consensus_service.go b/consensus/consensus_service.go index c45243f83..a8cb6ae5b 100644 --- a/consensus/consensus_service.go +++ b/consensus/consensus_service.go @@ -4,11 +4,9 @@ import ( "encoding/hex" "errors" "fmt" - "reflect" "time" "github.com/harmony-one/harmony/crypto/hash" - common2 "github.com/harmony-one/harmony/internal/common" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/log" @@ -18,7 +16,6 @@ import ( libp2p_peer "github.com/libp2p/go-libp2p-peer" "golang.org/x/crypto/sha3" - proto_discovery "github.com/harmony-one/harmony/api/proto/discovery" msg_pb "github.com/harmony-one/harmony/api/proto/message" consensus_engine "github.com/harmony-one/harmony/consensus/engine" "github.com/harmony-one/harmony/core/state" @@ -29,7 +26,6 @@ import ( "github.com/harmony-one/harmony/internal/profiler" "github.com/harmony-one/harmony/internal/utils" "github.com/harmony-one/harmony/p2p" - "github.com/harmony-one/harmony/p2p/host" ) // WaitForNewRandomness listens to the RndChannel to receive new VDF randomness. @@ -88,6 +84,12 @@ func (consensus *Consensus) Seal(chain consensus_engine.ChainReader, block *type return nil } +// Author returns the author of the block header. +func (consensus *Consensus) Author(header *types.Header) (common.Address, error) { + // TODO: implement this + return common.Address{}, nil +} + // Prepare is to prepare ... // TODO(RJ): fix it. func (consensus *Consensus) Prepare(chain consensus_engine.ChainReader, header *types.Header) error { @@ -95,23 +97,18 @@ func (consensus *Consensus) Prepare(chain consensus_engine.ChainReader, header * return nil } -// GetSelfAddress returns the address in hex -func (consensus *Consensus) GetSelfAddress() common.Address { - return consensus.SelfAddress -} - // Populates the common basic fields for all consensus message. func (consensus *Consensus) populateMessageFields(request *msg_pb.ConsensusRequest) { request.ViewId = consensus.viewID request.BlockNum = consensus.blockNum + request.ShardId = consensus.ShardID // 32 byte block hash request.BlockHash = consensus.blockHash[:] // sender address request.SenderPubkey = consensus.PubKey.Serialize() - - utils.GetLogInstance().Debug("[populateMessageFields]", "myViewID", consensus.viewID, "SenderAddress", consensus.SelfAddress, "blockNum", consensus.blockNum) + consensus.getLogger().Debug("[populateMessageFields]", "SenderKey", consensus.PubKey.SerializeToHexStr()) } // Signs the consensus message and returns the marshaled message. @@ -168,33 +165,18 @@ func (consensus *Consensus) DebugPrintPublicKeys() { utils.GetLogInstance().Debug("PublicKeys:", "#", len(consensus.PublicKeys)) } -// DebugPrintValidators print all validator ip/port/key in string format in Consensus -func (consensus *Consensus) DebugPrintValidators() { - count := 0 - consensus.validators.Range(func(k, v interface{}) bool { - if p, ok := v.(p2p.Peer); ok { - str2 := fmt.Sprintf("%s", p.ConsensusPubKey.Serialize()) - utils.GetLogInstance().Debug("validator:", "IP", p.IP, "Port", p.Port, "address", utils.GetBlsAddress(p.ConsensusPubKey), "Key", str2) - count++ - return true - } - return false - }) - utils.GetLogInstance().Debug("Validators", "#", count) -} - // UpdatePublicKeys updates the PublicKeys variable, protected by a mutex func (consensus *Consensus) UpdatePublicKeys(pubKeys []*bls.PublicKey) int { consensus.pubKeyLock.Lock() consensus.PublicKeys = append(pubKeys[:0:0], pubKeys...) - consensus.CommitteeAddresses = map[common.Address]bool{} + consensus.CommitteePublicKeys = map[string]bool{} for _, pubKey := range consensus.PublicKeys { - consensus.CommitteeAddresses[utils.GetBlsAddress(pubKey)] = true + consensus.CommitteePublicKeys[pubKey.SerializeToHexStr()] = true } // TODO: use pubkey to identify leader rather than p2p.Peer. consensus.leader = p2p.Peer{ConsensusPubKey: pubKeys[0]} consensus.LeaderPubKey = pubKeys[0] - prepareBitmap, err := bls_cosi.NewMask(consensus.PublicKeys, consensus.leader.ConsensusPubKey) + prepareBitmap, err := bls_cosi.NewMask(consensus.PublicKeys, consensus.LeaderPubKey) if err == nil { consensus.prepareBitmap = prepareBitmap } @@ -204,7 +186,7 @@ func (consensus *Consensus) UpdatePublicKeys(pubKeys []*bls.PublicKey) int { consensus.commitBitmap = commitBitmap } - utils.GetLogInstance().Info("My Leader", "info", hex.EncodeToString(consensus.leader.ConsensusPubKey.Serialize())) + utils.GetLogInstance().Info("My Leader", "info", consensus.LeaderPubKey.SerializeToHexStr()) utils.GetLogInstance().Info("My Committee", "info", consensus.PublicKeys) consensus.pubKeyLock.Unlock() // reset states after update public keys @@ -262,12 +244,6 @@ func (consensus *Consensus) Finalize(chain consensus_engine.ChainReader, header return types.NewBlock(header, txs, receipts), nil } -// Author returns the author of the block header. -func (consensus *Consensus) Author(header *types.Header) (common.Address, error) { - // TODO: implement this - return common.Address{}, nil -} - // Sign on the hash of the message func (consensus *Consensus) signMessage(message []byte) []byte { hash := hash.Keccak256(message) @@ -353,8 +329,8 @@ func (consensus *Consensus) GetViewIDSigsArray() []*bls.Sign { func (consensus *Consensus) ResetState() { consensus.phase = Announce consensus.blockHash = [32]byte{} - consensus.prepareSigs = map[common.Address]*bls.Sign{} - consensus.commitSigs = map[common.Address]*bls.Sign{} + consensus.prepareSigs = map[string]*bls.Sign{} + consensus.commitSigs = map[string]*bls.Sign{} prepareBitmap, _ := bls_cosi.NewMask(consensus.PublicKeys, consensus.LeaderPubKey) commitBitmap, _ := bls_cosi.NewMask(consensus.PublicKeys, consensus.LeaderPubKey) @@ -372,82 +348,8 @@ func (consensus *Consensus) String() string { } else { duty = "VLD" // validator } - return fmt.Sprintf("[duty:%s, PubKey:%s, ShardID:%v, Address:%v]", - duty, hex.EncodeToString(consensus.PubKey.Serialize()), consensus.ShardID, consensus.SelfAddress) -} - -// AddPeers adds new peers into the validator map of the consensus -// and add the public keys -func (consensus *Consensus) AddPeers(peers []*p2p.Peer) int { - count := 0 - - for _, peer := range peers { - _, ok := consensus.validators.LoadOrStore(common2.MustAddressToBech32(utils.GetBlsAddress(peer.ConsensusPubKey)), *peer) - if !ok { - consensus.pubKeyLock.Lock() - if _, ok := consensus.CommitteeAddresses[peer.ConsensusPubKey.GetAddress()]; !ok { - consensus.PublicKeys = append(consensus.PublicKeys, peer.ConsensusPubKey) - consensus.CommitteeAddresses[peer.ConsensusPubKey.GetAddress()] = true - } - consensus.pubKeyLock.Unlock() - } - count++ - } - return count -} - -// RemovePeers will remove the peer from the validator list and PublicKeys -// It will be called when leader/node lost connection to peers -func (consensus *Consensus) RemovePeers(peers []p2p.Peer) int { - // early return as most of the cases no peers to remove - if len(peers) == 0 { - return 0 - } - - count := 0 - count2 := 0 - newList := append(consensus.PublicKeys[:0:0], consensus.PublicKeys...) - - for _, peer := range peers { - consensus.validators.Range(func(k, v interface{}) bool { - if p, ok := v.(p2p.Peer); ok { - // We are using peer.IP and peer.Port to identify the unique peer - // FIXME (lc): use a generic way to identify a peer - if p.IP == peer.IP && p.Port == peer.Port { - consensus.validators.Delete(k) - count++ - } - return true - } - return false - }) - - for i, pp := range newList { - // Not Found the pubkey, if found pubkey, ignore it - if reflect.DeepEqual(peer.ConsensusPubKey, pp) { - // consensus.Log.Debug("RemovePeers", "i", i, "pp", pp, "peer.PubKey", peer.PubKey) - newList = append(newList[:i], newList[i+1:]...) - count2++ - } - } - } - - if count2 > 0 { - consensus.UpdatePublicKeys(newList) - - // Send out Pong messages to everyone in the shard to keep the publickeys in sync - // Or the shard won't be able to reach consensus if public keys are mismatch - - validators := consensus.GetValidatorPeers() - pong := proto_discovery.NewPongMessage(validators, consensus.PublicKeys, consensus.leader.ConsensusPubKey, consensus.ShardID) - buffer := pong.ConstructPongMessage() - - if err := consensus.host.SendMessageToGroups([]p2p.GroupID{p2p.NewGroupIDByShardID(p2p.ShardID(consensus.ShardID))}, host.ConstructP2pMessage(byte(17), buffer)); err != nil { - ctxerror.Warn(utils.GetLogger(), err, "cannot send pong message") - } - } - - return count2 + return fmt.Sprintf("[duty:%s, PubKey:%s, ShardID:%v]", + duty, consensus.PubKey.SerializeToHexStr(), consensus.ShardID) } // ToggleConsensusCheck flip the flag of whether ignore viewID check during consensus process @@ -457,25 +359,9 @@ func (consensus *Consensus) ToggleConsensusCheck() { consensus.ignoreViewIDCheck = !consensus.ignoreViewIDCheck } -// GetPeerByAddress the validator peer based on validator Address. -// TODO: deprecate this, as validators network info shouldn't known to everyone -func (consensus *Consensus) GetPeerByAddress(validatorAddress string) *p2p.Peer { - v, ok := consensus.validators.Load(validatorAddress) - if !ok { - utils.GetLogInstance().Warn("Unrecognized validator", "validatorAddress", validatorAddress, "consensus", consensus) - return nil - } - value, ok := v.(p2p.Peer) - if !ok { - utils.GetLogInstance().Warn("Invalid validator", "validatorAddress", validatorAddress, "consensus", consensus) - return nil - } - return &value -} - // IsValidatorInCommittee returns whether the given validator BLS address is part of my committee -func (consensus *Consensus) IsValidatorInCommittee(validatorBlsAddress common.Address) bool { - _, ok := consensus.CommitteeAddresses[validatorBlsAddress] +func (consensus *Consensus) IsValidatorInCommittee(pubKey *bls.PublicKey) bool { + _, ok := consensus.CommitteePublicKeys[pubKey.SerializeToHexStr()] return ok } @@ -508,28 +394,24 @@ func (consensus *Consensus) verifySenderKey(msg *msg_pb.Message) (*bls.PublicKey if err != nil { return nil, err } - addrBytes := senderKey.GetAddress() - senderAddr := common.BytesToAddress(addrBytes[:]) - if !consensus.IsValidatorInCommittee(senderAddr) { - return nil, fmt.Errorf("Validator address %s is not in committee", common2.MustAddressToBech32(senderAddr)) + if !consensus.IsValidatorInCommittee(senderKey) { + return nil, fmt.Errorf("Validator %s is not in committee", senderKey.SerializeToHexStr()) } return senderKey, nil } -func (consensus *Consensus) verifyViewChangeSenderKey(msg *msg_pb.Message) (*bls.PublicKey, common.Address, error) { +func (consensus *Consensus) verifyViewChangeSenderKey(msg *msg_pb.Message) (*bls.PublicKey, error) { vcMsg := msg.GetViewchange() senderKey, err := bls_cosi.BytesToBlsPublicKey(vcMsg.SenderPubkey) if err != nil { - return nil, common.Address{}, err + return nil, err } - addrBytes := senderKey.GetAddress() - senderAddr := common.BytesToAddress(addrBytes[:]) - if !consensus.IsValidatorInCommittee(senderAddr) { - return nil, common.Address{}, fmt.Errorf("Validator address %s is not in committee", common2.MustAddressToBech32(senderAddr)) + if !consensus.IsValidatorInCommittee(senderKey) { + return nil, fmt.Errorf("Validator %s is not in committee", senderKey.SerializeToHexStr()) } - return senderKey, senderAddr, nil + return senderKey, nil } // SetViewID set the viewID to the height of the blockchain @@ -551,13 +433,16 @@ func (consensus *Consensus) RegisterRndChannel(rndChannel chan [64]byte) { func (consensus *Consensus) checkViewID(msg *PbftMessage) error { // just ignore consensus check for the first time when node join if consensus.ignoreViewIDCheck { + //in syncing mode, node accepts incoming messages without viewID/leaderKey checking + //so only set mode to normal when new node enters consensus and need checking viewID + consensus.mode.SetMode(Normal) consensus.viewID = msg.ViewID consensus.mode.SetViewID(msg.ViewID) consensus.LeaderPubKey = msg.SenderPubkey consensus.ignoreViewIDCheck = false consensus.consensusTimeout[timeoutConsensus].Start() utils.GetLogger().Debug("viewID and leaderKey override", "viewID", consensus.viewID, "leaderKey", consensus.LeaderPubKey.SerializeToHexStr()[:20]) - utils.GetLogger().Debug("start consensus timeout", "viewID", consensus.viewID, "block", consensus.blockNum) + utils.GetLogger().Debug("Start consensus timer", "viewID", consensus.viewID, "block", consensus.blockNum) return nil } else if msg.ViewID > consensus.viewID { return consensus_engine.ErrViewIDNotMatch diff --git a/consensus/consensus_service_test.go b/consensus/consensus_service_test.go index c282ff6c3..06a069841 100644 --- a/consensus/consensus_service_test.go +++ b/consensus/consensus_service_test.go @@ -4,10 +4,7 @@ import ( "bytes" "testing" - "github.com/ethereum/go-ethereum/common" - "github.com/harmony-one/harmony/crypto/bls" - common2 "github.com/harmony-one/harmony/internal/common" msg_pb "github.com/harmony-one/harmony/api/proto/message" "github.com/harmony-one/harmony/internal/utils" @@ -15,26 +12,6 @@ import ( "github.com/harmony-one/harmony/p2p/p2pimpl" ) -func TestGetPeerFromID(t *testing.T) { - leaderPriKey := bls.RandPrivateKey() - leaderPubKey := leaderPriKey.GetPublicKey() - leader := p2p.Peer{IP: "127.0.0.1", Port: "9902", ConsensusPubKey: leaderPubKey} - priKey, _, _ := utils.GenKeyP2P("127.0.0.1", "9902") - host, err := p2pimpl.NewHost(&leader, priKey) - if err != nil { - t.Fatalf("newhost failure: %v", err) - } - consensus, err := New(host, 0, leader, leaderPriKey) - if err != nil { - t.Fatalf("Cannot craeate consensus: %v", err) - } - leaderAddress := utils.GetAddressFromBlsPubKey(leader.ConsensusPubKey) - l := consensus.GetPeerByAddress(common2.MustAddressToBech32(leaderAddress)) - if l.IP != leader.IP || l.Port != leader.Port { - t.Errorf("leader IP not equal") - } -} - func TestPopulateMessageFields(t *testing.T) { leader := p2p.Peer{IP: "127.0.0.1", Port: "9902"} priKey, _, _ := utils.GenKeyP2P("127.0.0.1", "9902") @@ -83,7 +60,6 @@ func TestSignAndMarshalConsensusMessage(t *testing.T) { } consensus.viewID = 2 consensus.blockHash = [32]byte{} - consensus.SelfAddress = common.Address{} msg := &msg_pb.Message{} marshaledMessage, err := consensus.signAndMarshalConsensusMessage(msg) diff --git a/consensus/consensus_v2.go b/consensus/consensus_v2.go index d52135522..dfbeb5f44 100644 --- a/consensus/consensus_v2.go +++ b/consensus/consensus_v2.go @@ -37,6 +37,20 @@ func (consensus *Consensus) handleMessageUpdate(payload []byte) { return } + if msg.Type == msg_pb.MessageType_VIEWCHANGE || msg.Type == msg_pb.MessageType_NEWVIEW { + if msg.GetViewchange() != nil && msg.GetViewchange().ShardId != consensus.ShardID { + consensus.getLogger().Warn("Received view change message from different shard", + "myShardId", consensus.ShardID, "receivedShardId", msg.GetConsensus().ShardId) + return + } + } else { + if msg.GetConsensus() != nil && msg.GetConsensus().ShardId != consensus.ShardID { + consensus.getLogger().Warn("Received consensus message from different shard", + "myShardId", consensus.ShardID, "receivedShardId", msg.GetConsensus().ShardId) + return + } + } + switch msg.Type { case msg_pb.MessageType_ANNOUNCE: consensus.onAnnounce(msg) @@ -57,23 +71,14 @@ func (consensus *Consensus) handleMessageUpdate(payload []byte) { } // TODO: move to consensus_leader.go later -func (consensus *Consensus) tryAnnounce(block *types.Block) { - // here we assume the leader should always be update to date - if block.NumberU64() != consensus.blockNum { - consensus.getLogger().Debug("tryAnnounce blockNum not match", "blockNum", block.NumberU64()) - return - } - if !consensus.PubKey.IsEqual(consensus.LeaderPubKey) { - consensus.getLogger().Debug("tryAnnounce key not match", "myKey", consensus.PubKey, "leaderKey", consensus.LeaderPubKey) - return - } +func (consensus *Consensus) announce(block *types.Block) { blockHash := block.Hash() copy(consensus.blockHash[:], blockHash[:]) // prepare message and broadcast to validators encodedBlock, err := rlp.EncodeToBytes(block) if err != nil { - consensus.getLogger().Debug("tryAnnounce Failed encoding block") + consensus.getLogger().Debug("announce Failed encoding block") return } consensus.block = encodedBlock @@ -86,7 +91,7 @@ func (consensus *Consensus) tryAnnounce(block *types.Block) { _ = protobuf.Unmarshal(msgPayload, msg) pbftMsg, err := ParsePbftMessage(msg) if err != nil { - consensus.getLogger().Warn("tryAnnounce unable to parse pbft message", "error", err) + consensus.getLogger().Warn("announce unable to parse pbft message", "error", err) return } @@ -94,7 +99,7 @@ func (consensus *Consensus) tryAnnounce(block *types.Block) { consensus.pbftLog.AddBlock(block) // Leader sign the block hash itself - consensus.prepareSigs[consensus.SelfAddress] = consensus.priKey.SignHash(consensus.blockHash[:]) + consensus.prepareSigs[consensus.PubKey.SerializeToHexStr()] = consensus.priKey.SignHash(consensus.blockHash[:]) // Construct broadcast p2p message if err := consensus.host.SendMessageToGroups([]p2p.GroupID{p2p.NewGroupIDByShardID(p2p.ShardID(consensus.ShardID))}, host.ConstructP2pMessage(byte(17), msgToSend)); err != nil { @@ -152,17 +157,6 @@ func (consensus *Consensus) onAnnounce(msg *msg_pb.Message) { } } - // skip verify block in Syncing mode - if consensus.BlockVerifier == nil || consensus.mode.Mode() != Normal { - // do nothing - } else if err := consensus.BlockVerifier(&blockObj); err != nil { - // TODO ek – maybe we could do this in commit phase - err := ctxerror.New("block verification failed", - "blockHash", blockObj.Hash(), - ).WithCause(err) - ctxerror.Log15(utils.GetLogger().Warn, err) - return - } //blockObj.Logger(consensus.getLogger()).Debug("received announce", "viewID", recvMsg.ViewID, "msgBlockNum", recvMsg.BlockNum) logMsgs := consensus.pbftLog.GetMessagesByTypeSeqView(msg_pb.MessageType_ANNOUNCE, recvMsg.BlockNum, recvMsg.ViewID) if len(logMsgs) > 0 { @@ -194,24 +188,17 @@ func (consensus *Consensus) onAnnounce(msg *msg_pb.Message) { consensus.getLogger().Debug("viewID check failed", "msgViewID", recvMsg.ViewID, "msgBlockNum", recvMsg.BlockNum) return } - consensus.tryPrepare(blockObj.Header().Hash()) + consensus.prepare(&blockObj) return } // tryPrepare will try to send prepare message -func (consensus *Consensus) tryPrepare(blockHash common.Hash) { - var hash common.Hash - copy(hash[:], blockHash[:]) - block := consensus.pbftLog.GetBlockByHash(hash) - if block == nil { - return - } - - if consensus.blockNum != block.NumberU64() || !consensus.pbftLog.HasMatchingViewAnnounce(consensus.blockNum, consensus.viewID, hash) { - consensus.getLogger().Debug("blockNum or announce message not match") - return - } +func (consensus *Consensus) prepare(block *types.Block) { + // if consensus.blockNum != block.NumberU64() || !consensus.pbftLog.HasMatchingViewAnnounce(consensus.blockNum, consensus.viewID, hash) { + // consensus.getLogger().Debug("blockNum or announce message not match") + // return + // } consensus.switchPhase(Prepare, true) @@ -258,9 +245,7 @@ func (consensus *Consensus) onPrepare(msg *msg_pb.Message) { return } - validatorPubKey := recvMsg.SenderPubkey - addrBytes := validatorPubKey.GetAddress() - validatorAddress := common.BytesToAddress(addrBytes[:]) + validatorPubKey := recvMsg.SenderPubkey.SerializeToHexStr() prepareSig := recvMsg.Payload prepareSigs := consensus.prepareSigs @@ -270,13 +255,14 @@ func (consensus *Consensus) onPrepare(msg *msg_pb.Message) { defer consensus.mutex.Unlock() if len(prepareSigs) >= consensus.Quorum() { // already have enough signatures + consensus.getLogger().Info("received additional prepare message", "validatorPubKey", validatorPubKey) return } // proceed only when the message is not received before - _, ok := prepareSigs[validatorAddress] + _, ok := prepareSigs[validatorPubKey] if ok { - consensus.getLogger().Debug("Already received prepare message from the validator", "validatorAddress", validatorAddress) + consensus.getLogger().Debug("Already received prepare message from the validator", "validatorPubKey", validatorPubKey) return } @@ -284,23 +270,22 @@ func (consensus *Consensus) onPrepare(msg *msg_pb.Message) { var sign bls.Sign err = sign.Deserialize(prepareSig) if err != nil { - consensus.getLogger().Error("Failed to deserialize bls signature", "validatorAddress", validatorAddress) + consensus.getLogger().Error("Failed to deserialize bls signature", "validatorPubKey", validatorPubKey) return } - if !sign.VerifyHash(validatorPubKey, consensus.blockHash[:]) { - consensus.getLogger().Error("Received invalid BLS signature", "validatorAddress", validatorAddress) + if !sign.VerifyHash(recvMsg.SenderPubkey, consensus.blockHash[:]) { + consensus.getLogger().Error("Received invalid BLS signature", "validatorPubKey", validatorPubKey) return } - consensus.getLogger().Debug("Received new prepare signature", "numReceivedSoFar", len(prepareSigs), "validatorAddress", validatorAddress, "PublicKeys", len(consensus.PublicKeys)) - prepareSigs[validatorAddress] = &sign + consensus.getLogger().Debug("Received new prepare signature", "numReceivedSoFar", len(prepareSigs), "validatorPubKey", validatorPubKey, "PublicKeys", len(consensus.PublicKeys)) + prepareSigs[validatorPubKey] = &sign // Set the bitmap indicating that this validator signed. - if err := prepareBitmap.SetKey(validatorPubKey, true); err != nil { + if err := prepareBitmap.SetKey(recvMsg.SenderPubkey, true); err != nil { ctxerror.Warn(consensus.getLogger(), err, "prepareBitmap.SetKey failed") } if len(prepareSigs) >= consensus.Quorum() { - consensus.switchPhase(Commit, true) // Construct and broadcast prepared message msgToSend, aggSig := consensus.constructPreparedMessage() consensus.aggregatedPrepareSig = aggSig @@ -322,11 +307,15 @@ func (consensus *Consensus) onPrepare(msg *msg_pb.Message) { consensus.getLogger().Debug("sent prepared message") } + consensus.switchPhase(Commit, true) // Leader add commit phase signature blockNumHash := make([]byte, 8) binary.LittleEndian.PutUint64(blockNumHash, consensus.blockNum) commitPayload := append(blockNumHash, consensus.blockHash[:]...) - consensus.commitSigs[consensus.SelfAddress] = consensus.priKey.SignHash(commitPayload) + consensus.commitSigs[consensus.PubKey.SerializeToHexStr()] = consensus.priKey.SignHash(commitPayload) + if err := consensus.commitBitmap.SetKey(consensus.PubKey, true); err != nil { + consensus.getLogger().Debug("leader commit bitmap set failed") + } } return } @@ -411,11 +400,16 @@ func (consensus *Consensus) onPrepared(msg *msg_pb.Message) { consensus.prepareBitmap = mask // Construct and send the commit message - blockNumHash := make([]byte, 8) - binary.LittleEndian.PutUint64(blockNumHash, consensus.blockNum) - commitPayload := append(blockNumHash, consensus.blockHash[:]...) + blockNumBytes := make([]byte, 8) + binary.LittleEndian.PutUint64(blockNumBytes, consensus.blockNum) + commitPayload := append(blockNumBytes, consensus.blockHash[:]...) msgToSend := consensus.constructCommitMessage(commitPayload) + // TODO: genesis account node delay for 1 second, this is a temp fix for allows FN nodes to earning reward + if consensus.delayCommit > 0 { + time.Sleep(consensus.delayCommit) + } + if err := consensus.host.SendMessageToGroups([]p2p.GroupID{p2p.NewGroupIDByShardID(p2p.ShardID(consensus.ShardID))}, host.ConstructP2pMessage(byte(17), msgToSend)); err != nil { consensus.getLogger().Warn("cannot send commit message") } else { @@ -464,17 +458,15 @@ func (consensus *Consensus) onCommit(msg *msg_pb.Message) { return } - validatorPubKey := recvMsg.SenderPubkey - addrBytes := validatorPubKey.GetAddress() - validatorAddress := common.BytesToAddress(addrBytes[:]) + validatorPubKey := recvMsg.SenderPubkey.SerializeToHexStr() commitSig := recvMsg.Payload consensus.mutex.Lock() defer consensus.mutex.Unlock() - if !consensus.IsValidatorInCommittee(validatorAddress) { - consensus.getLogger().Error("Invalid validator", "validatorAddress", validatorAddress) + if !consensus.IsValidatorInCommittee(recvMsg.SenderPubkey) { + consensus.getLogger().Error("Invalid validator", "validatorPubKey", validatorPubKey) return } @@ -482,48 +474,58 @@ func (consensus *Consensus) onCommit(msg *msg_pb.Message) { commitBitmap := consensus.commitBitmap // proceed only when the message is not received before - _, ok := commitSigs[validatorAddress] + _, ok := commitSigs[validatorPubKey] if ok { - consensus.getLogger().Debug("Already received commit message from the validator", "validatorAddress", validatorAddress) + consensus.getLogger().Info("Already received commit message from the validator", "validatorPubKey", validatorPubKey) return } - // already had enough signautres - if len(commitSigs) >= consensus.Quorum() { - return - } + quorumWasMet := len(commitSigs) >= consensus.Quorum() // Verify the signature on commitPayload is correct var sign bls.Sign err = sign.Deserialize(commitSig) if err != nil { - consensus.getLogger().Debug("Failed to deserialize bls signature", "validatorAddress", validatorAddress) + consensus.getLogger().Debug("Failed to deserialize bls signature", "validatorPubKey", validatorPubKey) return } blockNumHash := make([]byte, 8) binary.LittleEndian.PutUint64(blockNumHash, recvMsg.BlockNum) commitPayload := append(blockNumHash, recvMsg.BlockHash[:]...) - if !sign.VerifyHash(validatorPubKey, commitPayload) { + if !sign.VerifyHash(recvMsg.SenderPubkey, commitPayload) { consensus.getLogger().Error("cannot verify commit message", "msgViewID", recvMsg.ViewID, "msgBlock", recvMsg.BlockNum) return } - consensus.getLogger().Debug("Received new commit message", "numReceivedSoFar", len(commitSigs), "msgViewID", recvMsg.ViewID, "msgBlock", recvMsg.BlockNum, "validatorAddress", validatorAddress) - commitSigs[validatorAddress] = &sign + consensus.getLogger().Debug("Received new commit message", "numReceivedSoFar", len(commitSigs), "msgViewID", recvMsg.ViewID, "msgBlock", recvMsg.BlockNum, "validatorPubKey", validatorPubKey) + commitSigs[validatorPubKey] = &sign // Set the bitmap indicating that this validator signed. - if err := commitBitmap.SetKey(validatorPubKey, true); err != nil { + if err := commitBitmap.SetKey(recvMsg.SenderPubkey, true); err != nil { ctxerror.Warn(consensus.getLogger(), err, "commitBitmap.SetKey failed") } - if len(commitSigs) >= consensus.Quorum() { - consensus.getLogger().Info("Enough commits received!", "num", len(commitSigs)) - consensus.finalizeCommits() + quorumIsMet := len(commitSigs) >= consensus.Quorum() + rewardThresholdIsMet := len(commitSigs) >= consensus.RewardThreshold() + + if !quorumWasMet && quorumIsMet { + consensus.getLogger().Info("enough commits received for consensus", "num", len(commitSigs)) + go func(viewID uint32) { + time.Sleep(2 * time.Second) + consensus.getLogger().Debug("Commit grace period ended") + consensus.commitFinishChan <- viewID + }(consensus.viewID) + } + + if rewardThresholdIsMet { + go func(viewID uint32) { + consensus.commitFinishChan <- viewID + consensus.getLogger().Debug("enough commits received for block reward", "num", len(commitSigs)) + }(consensus.viewID) } } func (consensus *Consensus) finalizeCommits() { consensus.getLogger().Info("finalizing block", "num", len(consensus.commitSigs)) - consensus.switchPhase(Announce, true) // Construct and broadcast committed message msgToSend, aggSig := consensus.constructCommittedMessage() @@ -535,6 +537,7 @@ func (consensus *Consensus) finalizeCommits() { consensus.getLogger().Debug("sent committed message", "len", len(msgToSend)) } + consensus.switchPhase(Announce, true) var blockObj types.Block err := rlp.DecodeBytes(consensus.block, &blockObj) if err != nil { @@ -567,14 +570,17 @@ func (consensus *Consensus) finalizeCommits() { if consensus.consensusTimeout[timeoutBootstrap].IsActive() { consensus.consensusTimeout[timeoutBootstrap].Stop() - consensus.getLogger().Debug("start consensus timeout; stop bootstrap timeout only once") + consensus.getLogger().Debug("start consensus timer; stop bootstrap timer only once") } else { - consensus.getLogger().Debug("start consensus timeout") + consensus.getLogger().Debug("start consensus timer") } consensus.consensusTimeout[timeoutConsensus].Start() consensus.OnConsensusDone(&blockObj) - consensus.getLogger().Debug("HOORAY!!!!!!! CONSENSUS REACHED!!!!!!!", "numOfSignatures", len(consensus.commitSigs)) + consensus.getLogger().Info("HOORAY!!!!!!! CONSENSUS REACHED!!!!!!!", "numOfSignatures", len(consensus.commitSigs)) + + // TODO: wait for validators receive committed message; remove this temporary delay + time.Sleep(time.Second) // Send signal to Node so the new block can be added and new round of consensus can be triggered consensus.ReadySignal <- struct{}{} @@ -607,6 +613,7 @@ func (consensus *Consensus) onCommitted(msg *msg_pb.Message) { return } if recvMsg.BlockNum < consensus.blockNum { + consensus.getLogger().Info("received old blocks", "msgBlock", recvMsg.BlockNum) return } @@ -618,17 +625,21 @@ func (consensus *Consensus) onCommitted(msg *msg_pb.Message) { // check has 2f+1 signatures if count := utils.CountOneBits(mask.Bitmap); count < consensus.Quorum() { - consensus.getLogger().Debug("not have enough signature", "need", consensus.Quorum(), "have", count) + consensus.getLogger().Warn("not have enough signature", "need", consensus.Quorum(), "have", count) return } - blockNumHash := make([]byte, 8) - binary.LittleEndian.PutUint64(blockNumHash, recvMsg.BlockNum) - commitPayload := append(blockNumHash, recvMsg.BlockHash[:]...) + blockNumBytes := make([]byte, 8) + binary.LittleEndian.PutUint64(blockNumBytes, recvMsg.BlockNum) + commitPayload := append(blockNumBytes, recvMsg.BlockHash[:]...) if !aggSig.VerifyHash(mask.AggregatePublic, commitPayload) { consensus.getLogger().Error("Failed to verify the multi signature for commit phase", "msgBlock", recvMsg.BlockNum) return } + + consensus.mutex.Lock() + defer consensus.mutex.Unlock() + consensus.aggregatedCommitSig = aggSig consensus.commitBitmap = mask consensus.getLogger().Debug("committed message added", "msgViewID", recvMsg.ViewID, "msgBlock", recvMsg.BlockNum) @@ -655,14 +666,12 @@ func (consensus *Consensus) onCommitted(msg *msg_pb.Message) { // } consensus.tryCatchup() - consensus.mutex.Lock() - defer consensus.mutex.Unlock() if consensus.consensusTimeout[timeoutBootstrap].IsActive() { consensus.consensusTimeout[timeoutBootstrap].Stop() - consensus.getLogger().Debug("start consensus timeout; stop bootstrap timeout only once") + consensus.getLogger().Debug("start consensus timer; stop bootstrap timer only once") } else { - consensus.getLogger().Debug("start consensus timeout") + consensus.getLogger().Debug("start consensus timer") } consensus.consensusTimeout[timeoutConsensus].Start() return @@ -690,6 +699,13 @@ func (consensus *Consensus) tryCatchup() { break } + if consensus.BlockVerifier == nil { + // do nothing + } else if err := consensus.BlockVerifier(block); err != nil { + consensus.getLogger().Info("block verification faied") + return + } + if block.ParentHash() != consensus.ChainReader.CurrentHeader().Hash() { consensus.getLogger().Debug("[PBFT] parent block hash not match") break @@ -788,12 +804,16 @@ func (consensus *Consensus) Start(blockChannel chan *types.Block, stopChan chan break } } - case <-consensus.syncReadyChan: - consensus.mode.SetMode(Normal) consensus.SetBlockNum(consensus.ChainReader.CurrentHeader().Number.Uint64() + 1) + consensus.getLogger().Info("Node is in sync") consensus.ignoreViewIDCheck = true + case <-consensus.syncNotReadyChan: + consensus.SetBlockNum(consensus.ChainReader.CurrentHeader().Number.Uint64() + 1) + consensus.mode.SetMode(Syncing) + consensus.getLogger().Info("Node is out of sync") + case newBlock := <-blockChannel: consensus.getLogger().Info("receive newBlock", "msgBlock", newBlock.NumberU64()) if consensus.ShardID == 0 { @@ -826,11 +846,20 @@ func (consensus *Consensus) Start(blockChannel chan *types.Block, stopChan chan startTime = time.Now() consensus.getLogger().Debug("STARTING CONSENSUS", "numTxs", len(newBlock.Transactions()), "consensus", consensus, "startTime", startTime, "publicKeys", len(consensus.PublicKeys)) - consensus.tryAnnounce(newBlock) + consensus.announce(newBlock) case msg := <-consensus.MsgChan: consensus.handleMessageUpdate(msg) + case viewID := <-consensus.commitFinishChan: + func() { + consensus.mutex.Lock() + defer consensus.mutex.Unlock() + if viewID == consensus.viewID { + consensus.finalizeCommits() + } + }() + case <-stopChan: return } diff --git a/consensus/consensus_viewchange_msg.go b/consensus/consensus_viewchange_msg.go index e1188f801..0d0848f25 100644 --- a/consensus/consensus_viewchange_msg.go +++ b/consensus/consensus_viewchange_msg.go @@ -22,6 +22,7 @@ func (consensus *Consensus) constructViewChangeMessage() []byte { vcMsg := message.GetViewchange() vcMsg.ViewId = consensus.mode.GetViewID() vcMsg.BlockNum = consensus.blockNum + vcMsg.ShardId = consensus.ShardID // sender address vcMsg.SenderPubkey = consensus.PubKey.Serialize() @@ -77,6 +78,7 @@ func (consensus *Consensus) constructNewViewMessage() []byte { vcMsg := message.GetViewchange() vcMsg.ViewId = consensus.mode.GetViewID() vcMsg.BlockNum = consensus.blockNum + vcMsg.ShardId = consensus.ShardID // sender address vcMsg.SenderPubkey = consensus.PubKey.Serialize() vcMsg.Payload = consensus.m1Payload diff --git a/consensus/view_change.go b/consensus/view_change.go index 4fe38c698..e473dbb9c 100644 --- a/consensus/view_change.go +++ b/consensus/view_change.go @@ -146,9 +146,9 @@ func (consensus *Consensus) ResetViewChangeState() { consensus.viewIDBitmap = viewIDBitmap consensus.m1Payload = []byte{} - consensus.bhpSigs = map[common.Address]*bls.Sign{} - consensus.nilSigs = map[common.Address]*bls.Sign{} - consensus.viewIDSigs = map[common.Address]*bls.Sign{} + consensus.bhpSigs = map[string]*bls.Sign{} + consensus.nilSigs = map[string]*bls.Sign{} + consensus.viewIDSigs = map[string]*bls.Sign{} } func createTimeout() map[TimeoutType]*utils.Timeout { @@ -179,11 +179,11 @@ func (consensus *Consensus) startViewChange(viewID uint32) { consensus.consensusTimeout[timeoutViewChange].SetDuration(duration) consensus.consensusTimeout[timeoutViewChange].Start() - consensus.getLogger().Debug("start view change timeout", "viewChangingID", consensus.mode.ViewID()) + consensus.getLogger().Debug("start view change timer", "viewChangingID", consensus.mode.ViewID()) } func (consensus *Consensus) onViewChange(msg *msg_pb.Message) { - senderKey, validatorAddress, err := consensus.verifyViewChangeSenderKey(msg) + senderKey, err := consensus.verifyViewChangeSenderKey(msg) if err != nil { consensus.getLogger().Debug("onViewChange verifySenderKey failed", "error", err) return @@ -220,29 +220,29 @@ func (consensus *Consensus) onViewChange(msg *msg_pb.Message) { defer consensus.vcLock.Unlock() // add self m1 or m2 type message signature and bitmap - _, ok1 := consensus.nilSigs[consensus.SelfAddress] - _, ok2 := consensus.bhpSigs[consensus.SelfAddress] + _, ok1 := consensus.nilSigs[consensus.PubKey.SerializeToHexStr()] + _, ok2 := consensus.bhpSigs[consensus.PubKey.SerializeToHexStr()] if !(ok1 || ok2) { // add own signature for newview message preparedMsgs := consensus.pbftLog.GetMessagesByTypeSeq(msg_pb.MessageType_PREPARED, recvMsg.BlockNum) preparedMsg := consensus.pbftLog.FindMessageByMaxViewID(preparedMsgs) if preparedMsg == nil { sign := consensus.priKey.SignHash(NIL) - consensus.nilSigs[consensus.SelfAddress] = sign + consensus.nilSigs[consensus.PubKey.SerializeToHexStr()] = sign consensus.nilBitmap.SetKey(consensus.PubKey, true) } else { msgToSign := append(preparedMsg.BlockHash[:], preparedMsg.Payload...) - consensus.bhpSigs[consensus.SelfAddress] = consensus.priKey.SignHash(msgToSign) + consensus.bhpSigs[consensus.PubKey.SerializeToHexStr()] = consensus.priKey.SignHash(msgToSign) consensus.bhpBitmap.SetKey(consensus.PubKey, true) } } // add self m3 type message signature and bitmap - _, ok3 := consensus.viewIDSigs[consensus.SelfAddress] + _, ok3 := consensus.viewIDSigs[consensus.PubKey.SerializeToHexStr()] if !ok3 { viewIDHash := make([]byte, 4) binary.LittleEndian.PutUint32(viewIDHash, recvMsg.ViewID) sign := consensus.priKey.SignHash(viewIDHash) - consensus.viewIDSigs[consensus.SelfAddress] = sign + consensus.viewIDSigs[consensus.PubKey.SerializeToHexStr()] = sign consensus.viewIDBitmap.SetKey(consensus.PubKey, true) } @@ -252,9 +252,9 @@ func (consensus *Consensus) onViewChange(msg *msg_pb.Message) { // m2 type message if len(recvMsg.Payload) == 0 { - _, ok := consensus.nilSigs[validatorAddress] + _, ok := consensus.nilSigs[senderKey.SerializeToHexStr()] if ok { - consensus.getLogger().Debug("onViewChange already received m2 message from the validator", "validatorAddress", validatorAddress) + consensus.getLogger().Debug("onViewChange already received m2 message from the validator", "validatorPubKey", senderKey.SerializeToHexStr()) return } @@ -262,12 +262,12 @@ func (consensus *Consensus) onViewChange(msg *msg_pb.Message) { consensus.getLogger().Warn("onViewChange failed to verify signature for m2 type viewchange message") return } - consensus.nilSigs[validatorAddress] = recvMsg.ViewchangeSig + consensus.nilSigs[senderKey.SerializeToHexStr()] = recvMsg.ViewchangeSig consensus.nilBitmap.SetKey(recvMsg.SenderPubkey, true) // Set the bitmap indicating that this validator signed. } else { // m1 type message - _, ok := consensus.bhpSigs[validatorAddress] + _, ok := consensus.bhpSigs[senderKey.SerializeToHexStr()] if ok { - consensus.getLogger().Debug("onViewChange already received m1 message from the validator", "validatorAddress", validatorAddress) + consensus.getLogger().Debug("onViewChange already received m1 message from the validator", "validatorPubKey", senderKey.SerializeToHexStr()) return } if !recvMsg.ViewchangeSig.VerifyHash(recvMsg.SenderPubkey, recvMsg.Payload) { @@ -311,14 +311,14 @@ func (consensus *Consensus) onViewChange(msg *msg_pb.Message) { consensus.pbftLog.AddMessage(&preparedMsg) } } - consensus.bhpSigs[validatorAddress] = recvMsg.ViewchangeSig + consensus.bhpSigs[senderKey.SerializeToHexStr()] = recvMsg.ViewchangeSig consensus.bhpBitmap.SetKey(recvMsg.SenderPubkey, true) // Set the bitmap indicating that this validator signed. } // check and add viewID (m3 type) message signature - _, ok := consensus.viewIDSigs[validatorAddress] + _, ok := consensus.viewIDSigs[senderKey.SerializeToHexStr()] if ok { - consensus.getLogger().Debug("onViewChange already received m3 viewID message from the validator", "validatorAddress", validatorAddress) + consensus.getLogger().Debug("onViewChange already received m3 viewID message from the validator", "senderKey.SerializeToHexStr()", senderKey.SerializeToHexStr()) return } viewIDHash := make([]byte, 4) @@ -327,7 +327,7 @@ func (consensus *Consensus) onViewChange(msg *msg_pb.Message) { consensus.getLogger().Warn("onViewChange failed to verify viewID signature", "msgViewID", recvMsg.ViewID) return } - consensus.viewIDSigs[validatorAddress] = recvMsg.ViewidSig + consensus.viewIDSigs[senderKey.SerializeToHexStr()] = recvMsg.ViewidSig consensus.viewIDBitmap.SetKey(recvMsg.SenderPubkey, true) // Set the bitmap indicating that this validator signed. if len(consensus.viewIDSigs) >= consensus.Quorum() { @@ -353,7 +353,7 @@ func (consensus *Consensus) onViewChange(msg *msg_pb.Message) { blockNumHash := make([]byte, 8) binary.LittleEndian.PutUint64(blockNumHash, consensus.blockNum) commitPayload := append(blockNumHash, consensus.blockHash[:]...) - consensus.commitSigs[consensus.SelfAddress] = consensus.priKey.SignHash(commitPayload) + consensus.commitSigs[consensus.PubKey.SerializeToHexStr()] = consensus.priKey.SignHash(commitPayload) } consensus.mode.SetViewID(recvMsg.ViewID) @@ -366,7 +366,7 @@ func (consensus *Consensus) onViewChange(msg *msg_pb.Message) { consensus.ResetViewChangeState() consensus.consensusTimeout[timeoutViewChange].Stop() consensus.consensusTimeout[timeoutConsensus].Start() - consensus.getLogger().Debug("new leader start consensus timeout and stop view change timeout", "viewChangingID", consensus.mode.ViewID()) + consensus.getLogger().Debug("new leader start consensus timer and stop view change timer", "viewChangingID", consensus.mode.ViewID()) consensus.getLogger().Debug("I am the new leader", "myKey", consensus.PubKey.SerializeToHexStr(), "viewID", consensus.viewID, "block", consensus.blockNum) } consensus.getLogger().Debug("onViewChange", "numSigs", len(consensus.viewIDSigs), "needed", consensus.Quorum()) @@ -376,7 +376,7 @@ func (consensus *Consensus) onViewChange(msg *msg_pb.Message) { // TODO: move to consensus_leader.go later func (consensus *Consensus) onNewView(msg *msg_pb.Message) { consensus.getLogger().Debug("onNewView received new view message") - senderKey, _, err := consensus.verifyViewChangeSenderKey(msg) + senderKey, err := consensus.verifyViewChangeSenderKey(msg) if err != nil { consensus.getLogger().Warn("onNewView verifySenderKey failed", "error", err) return @@ -485,7 +485,7 @@ func (consensus *Consensus) onNewView(msg *msg_pb.Message) { consensus.getLogger().Info("onNewView === announce") } consensus.getLogger().Debug("new leader changed", "newLeaderKey", consensus.LeaderPubKey.SerializeToHexStr()) - consensus.getLogger().Debug("validator start consensus timeout and stop view change timeout") + consensus.getLogger().Debug("validator start consensus timer and stop view change timer") consensus.consensusTimeout[timeoutConsensus].Start() consensus.consensusTimeout[timeoutViewChange].Stop() } diff --git a/core/resharding.go b/core/resharding.go index 587c6901b..2a83237be 100644 --- a/core/resharding.go +++ b/core/resharding.go @@ -27,7 +27,7 @@ const ( // GenesisShardSize is the size of each shard at genesis GenesisShardSize = 100 // GenesisShardHarmonyNodes is the number of harmony node at each shard - GenesisShardHarmonyNodes = 76 + GenesisShardHarmonyNodes = 75 // CuckooRate is the percentage of nodes getting reshuffled in the second step of cuckoo resharding. CuckooRate = 0.1 ) @@ -226,10 +226,17 @@ func GetInitShardState() types.ShardState { com := types.Committee{ShardID: uint32(i)} for j := 0; j < GenesisShardHarmonyNodes; j++ { index := i + j*GenesisShardNum // The initial account to use for genesis nodes - priKey := bls.SecretKey{} - priKey.DeserializeHexStr(genesis.GenesisAccounts[index].BlsPriKey) + + // TODO: Old code. Will remove it later as long as the migration works. + // priKey := bls.SecretKey{} + // priKey.DeserializeHexStr(genesis.GenesisAccounts[index].BlsPriKey) + // pubKey := types.BlsPublicKey{} + // pubKey.FromLibBLSPublicKey(priKey.GetPublicKey()) + + pub := &bls.PublicKey{} + pub.DeserializeHexStr(genesis.GenesisAccounts[index].BlsPublicKey) pubKey := types.BlsPublicKey{} - pubKey.FromLibBLSPublicKey(priKey.GetPublicKey()) + pubKey.FromLibBLSPublicKey(pub) // TODO: directly read address for bls too curNodeID := types.NodeID{common2.ParseAddr(genesis.GenesisAccounts[index].Address), pubKey} com.NodeList = append(com.NodeList, curNodeID) @@ -238,10 +245,16 @@ func GetInitShardState() types.ShardState { // add FN runner's key for j := GenesisShardHarmonyNodes; j < GenesisShardSize; j++ { index := i + (j-GenesisShardHarmonyNodes)*GenesisShardNum - priKey := bls.SecretKey{} - priKey.DeserializeHexStr(genesis.GenesisFNAccounts[index].BlsPriKey) + + // TODO: this is old code. We will remove as long as the migration works. + // priKey := bls.SecretKey{} + // priKey.DeserializeHexStr(genesis.GenesisFNAccounts[index].BlsPriKey) + + pub := &bls.PublicKey{} + pub.DeserializeHexStr(genesis.GenesisFNAccounts[index].BlsPublicKey) + pubKey := types.BlsPublicKey{} - pubKey.FromLibBLSPublicKey(priKey.GetPublicKey()) + pubKey.FromLibBLSPublicKey(pub) // TODO: directly read address for bls too curNodeID := types.NodeID{common2.ParseAddr(genesis.GenesisFNAccounts[index].Address), pubKey} com.NodeList = append(com.NodeList, curNodeID) diff --git a/drand/drand_leader.go b/drand/drand_leader.go index 88dfbe778..d80d879a7 100644 --- a/drand/drand_leader.go +++ b/drand/drand_leader.go @@ -89,6 +89,12 @@ func (dRand *DRand) ProcessMessageLeader(payload []byte) { utils.GetLogInstance().Error("Failed to unmarshal message payload.", "err", err, "dRand", dRand) } + if message.GetDrand().ShardId != dRand.ShardID { + utils.GetLogInstance().Warn("Received drand message from different shard", + "myShardId", dRand.ShardID, "receivedShardId", message.GetDrand().ShardId) + return + } + switch message.Type { case msg_pb.MessageType_DRAND_COMMIT: dRand.processCommitMessage(message) diff --git a/drand/drand_leader_msg.go b/drand/drand_leader_msg.go index 1335b707e..64479f362 100644 --- a/drand/drand_leader_msg.go +++ b/drand/drand_leader_msg.go @@ -19,6 +19,7 @@ func (dRand *DRand) constructInitMessage() []byte { drandMsg := message.GetDrand() drandMsg.SenderPubkey = dRand.pubKey.Serialize() drandMsg.BlockHash = dRand.blockHash[:] + drandMsg.ShardId = dRand.ShardID // Don't need the payload in init message marshaledMessage, err := dRand.signAndMarshalDRandMessage(message) if err != nil { diff --git a/drand/drand_validator_msg.go b/drand/drand_validator_msg.go index bcfd7c683..f1790cdf7 100644 --- a/drand/drand_validator_msg.go +++ b/drand/drand_validator_msg.go @@ -19,7 +19,7 @@ func (dRand *DRand) constructCommitMessage(vrf [32]byte, proof []byte) []byte { drandMsg := message.GetDrand() drandMsg.SenderPubkey = dRand.pubKey.Serialize() drandMsg.BlockHash = dRand.blockHash[:] - drandMsg.BlockHash = dRand.blockHash[:] + drandMsg.ShardId = dRand.ShardID drandMsg.Payload = append(vrf[:], proof...) // Adding the public key into payload so leader can verify the vrf // TODO: change the curve to follow the same curve with consensus, so the public key doesn't need to be attached. diff --git a/go.mod b/go.mod index 4414b24fa..8ed1564f9 100644 --- a/go.mod +++ b/go.mod @@ -23,7 +23,7 @@ require ( github.com/gorilla/handlers v1.4.0 github.com/gorilla/mux v1.7.0 github.com/harmony-ek/gencodec v0.0.0-20190215044613-e6740dbdd846 - github.com/harmony-one/bls v0.0.2 + github.com/harmony-one/bls v0.0.4 github.com/hashicorp/golang-lru v0.5.1 github.com/iancoleman/strcase v0.0.0-20190422225806-e506e3ef7365 github.com/ipfs/go-datastore v0.0.1 diff --git a/internal/genesis/foundational.go b/internal/genesis/foundational.go index 5d96fc7b5..c057c54a0 100644 --- a/internal/genesis/foundational.go +++ b/internal/genesis/foundational.go @@ -2,125 +2,104 @@ package genesis // GenesisFNAccounts are the ECSDA accounts for the foundational nodes. var GenesisFNAccounts = [...]DeployAccount{ - // 0 - 9 - {Address: "0x04c3636dF766ad2d3E74424c016842f5704FAE3A", BlsPriKey: "ff889b96e38934c08ea158ce32fb94ec605180a4f665ed378aea9b9ac1c39320"}, - {Address: "0x053515CC2CAae77F7e2F0A9C48A27c8f6D76E99d", BlsPriKey: "aedc22d8d56a316ae67b05605deaa4981cdd0cd1aacbe5b7a0bf1b7caa23146d"}, - {Address: "0x0850243810E77fC6261965d2F163d36628E77E05", BlsPriKey: "556fcff9cc94c9f1d6bb22438e97b5c1c3f1f5ffc6d6268803dded1127e4ba3c"}, - {Address: "0x08aB87F3A8EB0b69a833575B6400670f3F330302", BlsPriKey: "99b6aa347e721aadfad46862ed69aeb1c98520b172e8f9cc27b4320fbbfda047"}, - {Address: "0x0d51F2d1EB1716F30c6f72673a4A89a0A10cdf64", BlsPriKey: "50d376eb002d63978ce57bd1cf05fb9d14c9848b050349d72d6a91387a40c270"}, - {Address: "0x144B2Fd168147311f749B0f9573664676C333e2A", BlsPriKey: "93ae6e013464d4c735212bd53449d96686e64c8555e5196ac9ca86cc00899052"}, - {Address: "0x22117D26611161b1b1f4EBB06C441aeeA102261c", BlsPriKey: "266a3235097fe6e4bd62c50c6e0c7254489815c1d66a3669d5385f80968a3217"}, - {Address: "0x24A8cD56bABef297F1C7234F830362466d01ff5d", BlsPriKey: "94d892425e444df361a55b6b1d1da422f345d69fc3a28d70d5e8923de182234b"}, - {Address: "0x25347d09373B2644191f1DC4beDEFEBE26a5b2d1", BlsPriKey: "dbd4292efae96e3754fb4033ea071967505874527aeea7a49f046ad5b8fdfc33"}, - {Address: "0x25441821ecA41DEc79578aAB866d3627A2e9BB9f", BlsPriKey: "a2f17bab1b77c816280ffdab1f5eed93a07f2f12533b60c16ac46019fc10496a"}, - - // 10 - 19 - {Address: "0x27930D539fA8B118B5547a81Fd4cd0f0Fd295503", BlsPriKey: "ba87900f76922f4a1d2b92ec0e926b2d88569e1e7d5984c0911757a951169003"}, - {Address: "0x28085D40501df849246040Ea815fbD71F08c2fc4", BlsPriKey: "73e6ba60b0ff0532edda429254e4b4bb2c5fb16efe3c20d57b8226e1b24a603f"}, - {Address: "0x28dA1beF8F5361863DcD427B6264f9DdF05B5D14", BlsPriKey: "f3959feb13ed9e067255f563cdf634e771dc5798ace447bd3abff4c38dd69b2a"}, - {Address: "0x2FB4584233B07d99ed7215c2E32dFCac8A2d5575", BlsPriKey: "e0ecefd475748154e05a2fcd176c6246f656fcc9dbc64d2d10d131203883683f"}, - {Address: "0x2b3234Ee92270A486a1598c5Bd74e739EC26fd9b", BlsPriKey: "9a10ab54809b631f6bb883936e98a858562b78fcca65624063c1ffd6a4764344"}, - {Address: "0x2bC858D0967384C0093e12824Bb3d6486d51c30D", BlsPriKey: "06b61ea63b79ea06f2348ca228f8e81e1254f27c258071f4864f13859880eb49"}, - {Address: "0x324c741430F5B970b61E398434B4F3957a6BC6E0", BlsPriKey: "0287afb975f206d113ad390cd69bd10b40c90e741d0a2ea436de917f1920bd01"}, - {Address: "0x3413e7e39eE7394b692FB04c12f5671d5Bb43e0b", BlsPriKey: "37e7ece9845538d6da54cbdd81c780f60ca94dc55662329e47617bfaa1c9ef3d"}, - {Address: "0x386333bfe5Dbdb4c0b5633E71190F3F822b3C0bC", BlsPriKey: "7b7cf3a71e9380a402739bf2f70f0d710b22d32a77ef1b82aafb4206dc036139"}, - {Address: "0x3BF69655b3cE5212A3d56f0D78064Cb6F124a60B", BlsPriKey: "02588dbcabdb4c5acf70d63a29f5c4e479bd9d3d373528f132411a2a9884cc59"}, - - // 20 - 29 - {Address: "0x3D88FF444D18F7bcC530F5f5171048e725AEc79C", BlsPriKey: "93649cc817c7d430b7a8e5897bf406619ee2fc78e0fa78509378f2c35750e40b"}, - {Address: "0x40d6f48c7b27BA7544b04456445Cf19B680F5484", BlsPriKey: "b49ae8ad8f6633590c947696e2450e1990a7c3a505ffa664d955a1645d37420a"}, - {Address: "0x43bcBa1c3c3Bf76790d04cad7357229ECD71BDAD", BlsPriKey: "87bb88febe2ffaa04ce2285a7459bd57b5a265bbdd0837e6e572f97ddbbb4536"}, - {Address: "0x52D77E90caE790ad2bA9DE138Ea8B65cCC5EF652", BlsPriKey: "fed900228f6a9537de84a28d593345937eb7ea5b4fe9d73197a6bb91f1ccf209"}, - {Address: "0x583B5d4a45E2ce2E29F2Dc6c0645344Bad901755", BlsPriKey: "63e7fbd3fdc7f6a178a47c1e1df687b300a61333e2961d0743fc354546b8060e"}, - {Address: "0x593815C55fC25B4BcC84473038A121a22796aAA8", BlsPriKey: "51c18cd21102919157db972f2bb7e6a2409359e0d9340829f58da6d5937c633e"}, - {Address: "0x59ebA70c8D8B3d4157432815c2A2DA774bA63aa8", BlsPriKey: "aeec4383a72ae86d60806fb211ba291bacabb9e421f6c7f91f0d446d89df5753"}, - {Address: "0x5E49BB8be4e199e8ddDe3A09E67D3c23239AC16c", BlsPriKey: "4707bc077bf10f471ee13aebf1f6d76c20315b8aacaa124b8f62fbbcaa7e213f"}, - {Address: "0x5dc4D61A44EBEb41549021342a290bd726623A38", BlsPriKey: "e1723649c8391386c27ee824b8272e00b33b4ffca8ae817e3889fbfd9714933f"}, - {Address: "0x609e8747cdcE518fB86C5990dCE325649C487133", BlsPriKey: "eb0c8944a1c71d2b0fa2e71ae54269065e30ae1af3f6be5b0afa37221f814624"}, - - // 30 - 39 - {Address: "0x638Ff0c3c291eA08c2653Bb993E3360D63038678", BlsPriKey: "df05f4cf396113df0dba76db551376c0393c28d2a9ef4546eed6d4ab2a806f16"}, - {Address: "0x65c123f9492De546B6e5852f58eB0Df39307Bf45", BlsPriKey: "7ae51f7e896107d4ad7ba4d3cb675b92a45a78164190f84d636ddc2f389db872"}, - {Address: "0x689a35324d6B8DDDfa3bF5E7b26A23E704dD0100", BlsPriKey: "331ff92b2b15572baea16f48eace71aac2458fb20a9ba08c6726fc8e5a4eda1d"}, - {Address: "0x6A6A5FBfA9923EBB76f9E42013e7C4f3CfDC145C", BlsPriKey: "e02a9898a456d4107f3808d892b6183d8a518e1f34cfbbd49800a421f9461617"}, - {Address: "0x6b9E03aB56786f4F228eE11D965A1a81ed7dA1D4", BlsPriKey: "52bd07e13d1559c7784fb82c10089320ae60d32926621f1dfd101f8dae359e1a"}, - {Address: "0x6c11b83856804D1eae8823beB697d09569fE87A0", BlsPriKey: "398a6bd069f18715865464eaeb97b0be3c5f0c4223ba5adaeea7a5a1fab5006f"}, - {Address: "0x72B6aefe8aC9B8873Ab854e6f4fD4801A3F4B2f0", BlsPriKey: "9b9f85208903cf0913e2e75122970de7040e705ce7894820ecf5e5d12cd74956"}, - {Address: "0x76f8d12F6624f713B2D8894A749ad926F7812350", BlsPriKey: "418f1c60d037440a24d746dcf66038e3307ba1fb729b4f6fbe5fee073fd6000a"}, - {Address: "0x78A8D29D81dD02c13a2a6077d887CF661B67E2c0", BlsPriKey: "ae7d770f8ac1201bfa1023bdba4fe76ac4970a8a24a1f2c51a67ecf04d59b948"}, - {Address: "0x79f8E1B732bA63987873d5eB86C81364C2cF5021", BlsPriKey: "0a0f7e214dd04b4963970aeefe6e59ab9678acfd101cb2486a0addd81a891137"}, - - // 40 - 49 - {Address: "0x7A4306d4D0A4f15A5fA54486cE4e6403E313805A", BlsPriKey: "f0c85ec2f9bce31731b0a0d936b1974890411e9b3ffe892652aa66a738d47251"}, - {Address: "0x7ACDCB2BAcA2911BdcE98e308515A289ac60b7d2", BlsPriKey: "69b6a1ac0b665d11b6c5acefbd92c3aee3b79225295dd7d07d3a40c812cf6973"}, - {Address: "0x7f42f7a4d66f0387AE77A219d0742E8a706231CA", BlsPriKey: "f336a59595fbd8f0a81e8ece411f60983adcfb7dc7581cc7ed067fa525db7c3d"}, - {Address: "0x802bEcc3615Fb8b751ADebA452A30C57F351e8D1", BlsPriKey: "831e13190c4e1b46e87fb825ee3a364fa7502f044a52e2f61c86a29d8bdc7c02"}, - {Address: "0x82301962Afa7328FDC34e3610B48D899F031e15F", BlsPriKey: "cb26ea4242d59183f0fb6dbf546e4c8c96f3a65b49a246b077fd3818ca81ad05"}, - {Address: "0x86b4b2dEEE393eBb9633e6F0FEd74F39638A7B4e", BlsPriKey: "32af10834aa6c8216b99eff59314df1699055018c54002938b62420448721d3c"}, - {Address: "0x87a157db95dc3517Eb578d4cedee92a5ab275BD5", BlsPriKey: "09dac13c3e140f036b6ba82915b9ce207b99d74ec4a862627be3fd3804180538"}, - {Address: "0x880D5c6aD4117D26126543Af48f2f9bCDd4DaA0A", BlsPriKey: "0c93bcb39c821c8c83415f9147c4b7ff006c8f89d527c355b52aca900054e04f"}, - {Address: "0x8cF87bB4BE77d8Dbf16fF61273e02E046a18D716", BlsPriKey: "ecb310216ffa14d546c8c820dcb3def75a491e5e3289bf063f084564802a0a07"}, - {Address: "0x8dc63cCA875eAd38d9554bB97171a4f18AbE92E7", BlsPriKey: "bf9d280162fb51198d13eb4a2d77b99ea9ebf851cf4ef936cefdf643b0323961"}, - - // 50 - 59 - {Address: "0x93570Dcb1Bf1a0bD1d476a542309754a6dbCE632", BlsPriKey: "6c02a5c98f5701bb1509b17baedf20671acfff38006d02d740412d157e82824f"}, - {Address: "0x9668c58b282f954EA8B732e0D72045bdF19df8B3", BlsPriKey: "82a090f4a3fd113ea14ec46c46fc40e7d70afc46d8fef84100859520f171a115"}, - {Address: "0x97b834277538e4517f43f9E11fa0BbebaD7c0d3e", BlsPriKey: "3c87e18e45b4f659cc5801e5bf4d82574614cbd742200ba989a04bb3fe90170f"}, - {Address: "0x9c23fE8cdcA1a8E529deeE8eD8492575cc3F9129", BlsPriKey: "15f9a467aaf80abe0471c317b490902d174c9b498c456d67bdcfba22f593be60"}, - {Address: "0xA28e6f8D23cc3Fe77D531c7D60bd73F8fD71C5c7", BlsPriKey: "f0fb598b4becc13127c060302b5938915777b2b9c96028ae4bace6fed312923b"}, - {Address: "0xA41F4dDd1b11A6107f1973037D070869495e71E4", BlsPriKey: "973641a9a2f31572f38f789d772e698833da413d4234ca10fd82976b2ff68d6f"}, - {Address: "0xA721ad85fFfAb28115e1b4B8347A5B42AEA26aA1", BlsPriKey: "78c2d7215e63bfe22fb3f8052bf2607dc2b01815dbc7ae30fcc540a75aeaf01b"}, - {Address: "0xB18e698BE8698346f7929F4E019D8B1aFE3D04b7", BlsPriKey: "788b18e4b3480e4e22a7612a5bba18a07c1ce2ca63d98473c50c8ef0bcfe2b22"}, - {Address: "0xB1Fa8F1CEa1A78d8887609CebEA592313dD659C1", BlsPriKey: "0fb470757299aa687196bb09d7bdb3d65b991cff679aeeac282d02b01ec9b22b"}, - {Address: "0xB4018FF5B888e902bD952D6e55A5cDbd8C73Ac1A", BlsPriKey: "356fe79d613c2cb90d8f4617d803153e3f4c30727afec45ddaadd790a87a5d14"}, - - // 60 - 69 - {Address: "0xB68751A436f287CE3DA347277259af5c7bA84e38", BlsPriKey: "c143e92cef9db63f81d6b9d79cb8da5c9ecba5cfebf4b832b3f156d62d1ba22a"}, - {Address: "0xB88AB7A6678c87aeBE7b753459258012eb2Cc76c", BlsPriKey: "bc0936a0f0f7ff841381dd184cae4096698316aacef5e8dd8f3e65095c924a1e"}, - {Address: "0xB99Ad8B391eDD1F15c51f773F4bc23Bba7dF45F3", BlsPriKey: "72ad8fd13e5c6a0a06f1f94fe362518f06f3849b9fb68bad53b14809d8e6e03c"}, - {Address: "0xC3FBdE6a171aCc0466614D09b58E013058e7c0d2", BlsPriKey: "c75d17225c65c42c2e569698d3ad3cb91a4d93472f639ef59bd2866d704d4a4c"}, - {Address: "0xC6b6a71d6f0C5b98E25FCf14b5378c807B0d475a", BlsPriKey: "e7928dcef4f288bccae4fbc57300f80bf170a72ed707fcb9dc16e167c8c8e238"}, - {Address: "0xC6fDB78B643E8eBaC472dB61c1e84B6Fe0Abe185", BlsPriKey: "4630be86ee6858c573202468c722d63e864383893315ac9f28d2f731b256fe5c"}, - {Address: "0xD0F9AD2b60792fAff02f8Bd0F2D9cE2790722706", BlsPriKey: "e4159dec12820b44d0e1118c2bc3a2260eba2755855a54f05af74604a92cd232"}, - {Address: "0xD28B4bC96020De252A0ee817767B6Cdb26A47d73", BlsPriKey: "afc343c1cad50194dbb4dbc5c010daf3fb50b0c3ef3b3279c08be7b3243ce924"}, - {Address: "0xD31095BE15D4b0b16657EEB72e0cc81e24EAc101", BlsPriKey: "c15dfd4eaffa5f7174747b6887a05b5ecdca62847ea54cca8d5f19188c414f08"}, - {Address: "0xD499fAC5afa17b5705B91838753Bfbf2e20138e4", BlsPriKey: "d54f56fd7bbef9b3e73de868a9414884c2617da2bc5f314ea0c36fc821848312"}, - - // 70 - 79 - {Address: "0xDfC0B00B629dDD5704a156A0D932F78692fc842F", BlsPriKey: "2b1830345d134ea5d1b9cdf9d93af3abca5d90a86dbfc4beed98a749a9254332"}, - {Address: "0xE2ab78ecf325084485957B2599d53Bcf944Cbca8", BlsPriKey: "080fde81e06a194228eadcb573edeb0e3c445295435d32401c404934ea58cb09"}, - {Address: "0xEC7C495866689d6b7E335D810645F440f16F86d0", BlsPriKey: "1ec4cac69876c5339c16c5c48c31ac32164574007dc4d674f8f6fee6735b6f4d"}, - {Address: "0xEd677E021df3542998e407970E1127d334Be0285", BlsPriKey: "ad0cc9631a98e5f527cee84f7daa2d24faa8d3714fd28c5d73c4e21c6ba3c13f"}, - {Address: "0xF262609617c202087B31aCf364C00967f5Cd85De", BlsPriKey: "672ccacc49f216aec996eceb74f63ff8beb1e53361146963452859b0dcafb728"}, - {Address: "0xF7E33ef7132bcc716C2242385d9862c3c43baB7E", BlsPriKey: "b393c776a159098e0acdf67ba63f1d1a26760b9bcfe9f656da5aa85cd02fc43a"}, - {Address: "0xa3B34f4E21C6c44A603E3c53abbF8b10C7BdaF59", BlsPriKey: "fbc7a2efb93e3fdd87136aa9a87e59040e2af25ae176e1519af92aff35d6570f"}, - {Address: "0xa4BF67e67910225aA1C3Cd65595d8a1b1227F42E", BlsPriKey: "51a79e8fdce95c39fc33a8ec890783746f56e3700a8b2cc3f98e94248d07103a"}, - {Address: "0xa61CA9f1EB26787EEd89dAEE4A326C4e1cb5eCdB", BlsPriKey: "a514163c7b2778321ec8499799408ea438bb03d9a315919b8d280ee88ba4bf16"}, - {Address: "0xa714cd269A0ca23131C8cD5aeFC49F450578C4B4", BlsPriKey: "469d183b6f7caf5960a013d3a3b08c46c245fedf4ab2d835192a09b4c6d37231"}, - - // 80 - 89 - {Address: "0xb108BF4945Bd7975cF974f47476e689ACd542F23", BlsPriKey: "25f293cfd3139282db8438047f28b886d12ab2602ba87323b7fd2a975d66671a"}, - {Address: "0xb69509BFf7Ac53eA998e16FBC247f24F88eE8572", BlsPriKey: "00723137f8118612feca54cdc558dddad18aefb05f6dbb05a50eba172a77f33f"}, - {Address: "0xc55c56F661eD185103839FdFeFd80DC38938913b", BlsPriKey: "432dd6844c07c4745b34d65c6c2aebc5b8b69597a9ad7e668f248d2f22ab5070"}, - {Address: "0xd021c9a6A8816FE57a3A4CBd02fA824e0e92421B", BlsPriKey: "00a3cb66218c2cd3efa31bcbe783ff920fb356ad31f14683ca8ceb131d774d0b"}, - {Address: "0xdA1DF648bC047546326D05dF370ec0ee3D84642A", BlsPriKey: "e4db03641de29ccbc3531705d7702db8e77684d097d6cdb4b29ee754ad9c913b"}, - {Address: "0xeaD1fAa7E5Fdb6136057d4BfCa1f05D220D1441f", BlsPriKey: "85ae5067e08574799143cca66da055f4a2db065c3d451235acfaec90c2965f4e"}, - {Address: "0xf10f63f5Bd46c58d2e9530E7F8cb6b4336D05d4E", BlsPriKey: "46bb0a5c47db2c94a456fd07690543db3f50710513814655d5eef13443a3b122"}, - {Address: "0xfB81EFd254Fe117047872146806153539F89669E", BlsPriKey: "107062c37224ef8123653a1f3c92e3ceb76e9f6c346808c71bdb165848c47f28"}, - {Address: "0xfdc963E875Ea99E434e4B815b7d8Bf506dAA9222", BlsPriKey: "4a75d92d2b0ec874bd3c8fdf8fd46ecc0ab18aa31581c013acc6a25b610f2c68"}, - {Address: "0x35D29200aFC9A4cDC05166096059a042078CB53e", BlsPriKey: "af96cd1118284a8a5916359b7fa566346f2017eadc0d3efcaf67cffe374bf724"}, - - // 90 - 99 - {Address: "0xe4a69826534aD3f6ec6E432474B0380E7F9a9C3d", BlsPriKey: "77da1ed33a8b00b2a227902f53045ed15aa2af735cb17ddbe5d42bcb29cda363"}, - {Address: "0x74e0014c9899c82f05F6AC110583F9f7dCC36508", BlsPriKey: "49decb0f0d35ab8882b253a130f987a6d8dc8ee63b1df340c5ac953d68362790"}, - {Address: "0x5a22c7ec1579C0d87760F4C8ec32fBE24d40E1Dc", BlsPriKey: "4fc4c886c8c5ae820848c6be9c9eafe1012f69cefc17aa790f4ce9daaf0cfae0"}, - {Address: "0xcb0A6c1914d2AD10855cC8cD70B040b7Dc6573a8", BlsPriKey: "51b5dce64da6a543fd171f2a1309347792767e1258c4cb4a9594311a162b9fb6"}, - {Address: "0xfF86Ff1FF457c3eBc18D71ffA30cfedd0860559c", BlsPriKey: "4b0d338b30a055bee3e2f070adc93d341b9316a315b4b4efe1639f0be2c1c10b"}, - {Address: "0xff1bE0eAC9B6053CD656947F0CcE7d277FF720Ec", BlsPriKey: "d94e179e77a8bf71206b2232eb826a9b5f8a64c55d919411263511e3a2ce7407"}, - - //100-103 - {Address: "one1zjjul68lhv8hef7angwvakmc37evv8gppraft0", BlsPriKey: "d8c85b478bc2bb60f333a3b509bc858b275dcfad6975341f9d0d71f9b0bede3e"}, - {Address: "one1srnk0ekhuljsvsqykg6f9s067xfg6gaytle3rn", BlsPriKey: "b402c15e0f7d89d0616d842d17e231b47898933bf271167f214faf3cff0d8e3e"}, - {Address: "one1rfaajrvn5zdfxydf5wkvrwsyylza6205xap9x0", BlsPriKey: "d1ed792efcc3424660fe17aaf3168e17e5b3b8e92c728e3fa9e0f498903c6c54"}, - {Address: "one10746sav20n8h4gm3sevj3vfydtpv6vpksv2065", BlsPriKey: "7434392536c8620c6efcb81aa1a829f8b1d2fa4e5275a7d24dbc8378466dd639"}, + {Index: "0", Address: "one1y0xcf40fg65n2ehm8fx5vda4thrkymhpg45ecj", BlsPriKey: "6e4c9bb993e6eb1c59947960f866047e002ab513fe80f303f2f6253ac00cf960", BlsPublicKey: "9e70e8d76851f6e8dc648255acdd57bb5c49cdae7571aed43f86e9f140a6343caed2ffa860919d03e0912411fee4850a", Updated: "copied from sheet"}, + {Index: "1", Address: "one1q563tnpv4tnh7l30p2wy3gnu3akhd6va97w7ku", BlsPriKey: "df29ffd990d798f08afcc2e7a8225f3a7e44d62ef3a4c17dc7fd1586d17ed627", BlsPublicKey: "4cb81c627f179a67085ed9fc80f851ea357debad60ebaaca7e8e091a54efd1ca5849094524aa55527b0c173530b1c392", Updated: "was in code and updated from sheet"}, + {Index: "2", Address: "one18lp2w7ghhuajdpzl8zqeddza97u92wtkfcwpjk", BlsPriKey: "6205462fb43e2d6514fee923a0afb18b41d7345b70e6dbd7955061681d2e560f", BlsPublicKey: "fce3097d9fc234d34d6eaef3eecd0365d435d1118f69f2da1ed2a69ba725270771572e40347c222aca784cb973307b11", Updated: "copied from sheet"}, + {Index: "3", Address: "one1pz4c0uagav9kn2pn2adkgqr8pulnxqcz4nmvax", BlsPriKey: "2ded27f361ae35e745e2144fcdd349b82d6791f10ad017b9ca588a8f28177218", BlsPublicKey: "emptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptye", Updated: "was in code and updated from sheet"}, + {Index: "4", Address: "one1ldthk5zyrea6w60rptcfyzlftd8fsn9fhkeps7", BlsPriKey: "11f7fa746112d7a2485d29b572f115a0d3f20e9b4117c927a73d2e5347246f1c", BlsPublicKey: "emptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptye", Updated: "was in code and updated from sheet"}, + {Index: "5", Address: "one1z39jl5tgz3e3ra6fkru4wdnyvakrx0323zyr8v", BlsPriKey: "0e6ea9aec01fa4d78433797a0162b8134b1f16435e7233799c3319a49a623a1e", BlsPublicKey: "0e8ce22d33fd39b74e6ebe72f037dd575d82d779a339557369fc65eec6db2dd14c1989ba786f5e6fbd13b9aa5eaea903", Updated: "was in code and updated from sheet"}, + {Index: "6", Address: "one19y2r8ykaztka3z8ndea0a2afd5kgswyfeahsmf", BlsPriKey: "732747c5ab1552bcbb4cfdbe87e72719496f7a0c581f08dfc0af5760c695c35b", BlsPublicKey: "475b5c3bbbda60cd92951e44bbea2aac63f1b774652d6bbec86aaed0dabd10a46717e98763d559b63bc4f1bfbde66908", Updated: "copied from sheet"}, + {Index: "7", Address: "one1zvaqqafg0nvmxtsvzkqalc3lz378qw5j6ysz5l", BlsPriKey: "527cf719d7ee215e0b22ea8778d86b01701ba2378db916dd8cf50bdfe1294d38", BlsPublicKey: "829246b61310fc6d48de362ba51c85764b0e4e594f38fb21fa14df203dbabcbc1c45e2c53d5d06677a1d6dce3cdcb282", Updated: "was in code and updated from sheet"}, + {Index: "8", Address: "one1y5686zfh8vnygxglrhztahh7hcn2tvk33vsgrt", BlsPriKey: "0c7d3eb1276f19a443fdac60dded4791a4a55ce49b6019dcf58c704a2222b65e", BlsPublicKey: "ed59468d36e33f0e2cd21951c55e41420a6736d23ef013eb3a39f6b4a9290c6353c0a3ea996bc5ae65bd4a5776f76c96", Updated: "was in code and updated from sheet"}, + {Index: "9", Address: "one1nvu626slwt6hwq2cup846nepcl2apuhk38gl3j", BlsPriKey: "0ad522a8f261ff061ed9b26c21e00b5d6df890589b51234cda265d99f5f1965a", BlsPublicKey: "663f82d48ff61d09bb215836f853e838df7da62aa90344dcf7950c18378dae909895c0c179c2dd71ea77fa747af53106", Updated: "copied from sheet"}, + {Index: "10", Address: "one1y7fs65ul4zc33d2502ql6nxs7r7jj4grs5x3y9", BlsPriKey: "1aaa0e30b6f746f048df8f67ac0c7a89995aeb93de83ab76946b61c6a6792619", BlsPublicKey: "847ba7e5422187c2c0e594efa31840d117641d9a156ffc076d9194ab71f7ce95b59f2c00a822312da60f39f2d6437583", Updated: "was in code and updated from sheet"}, + {Index: "11", Address: "one19qy96szsrhuyjfrqgr4gzhaaw8cgct7ym83wy3", BlsPriKey: "f201abb3a8291bf493be41e90deed45daefb6a819af5f00c37d2a1d4da49ed3e", BlsPublicKey: "emptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptye", Updated: "was in code and updated from sheet"}, + {Index: "12", Address: "one16y3pzva57c65wwfpwr7ve63q67aztedsphv069", BlsPriKey: "7127c7cf52ecd156ffe247134c0820f6b9e33a4349c52b21600b6d8a25702345", BlsPublicKey: "1e9f5f68845634efca8a64e8ffcf90d63ec196f28fb64f688fb88b868728ab562b702af8414f48c5d045e94433ec5a87", Updated: "copied from sheet"}, + {Index: "13", Address: "one12zelq8ax3k48tfzl5zz37ndknremq6um62dwxa", BlsPriKey: "454196dfa2954d7bb84f2d5f44661708f418b1bd321818e976bda406f58e9f1c", BlsPublicKey: "0171f68b35f45281222ff9008d40301d20fb5c328fd8126cf24f50f15b879b818c14b4f98b58ad7864cb75509993190b", Updated: "was in code and updated from sheet"}, + {Index: "14", Address: "one19verfm5jyu9ys6s4nrzm6a8888kzdlvmqpenh4", BlsPriKey: "c432402edfc55ca7ec91adf91d830481e329513500303ca4a49a98c8b5cf9504", BlsPublicKey: "7fb7ccadd6fa57a04fa49e6128063fc003dfc543688a1dcb15546ffe9e180467f85f0b3aa0382472f27a2e0db050ed09", Updated: "was in code and updated from sheet"}, + {Index: "15", Address: "one14uzsrvucmxx5wwkx46r9a6mpqgtjlrchelw5pp", BlsPriKey: "6787e0bb328a2f29e58037ada6b2f2324b2cf39ab04f865dcb43526f1b155819", BlsPublicKey: "43b1376eff41dfdccaeb601edc09b4353e5abd343a90740ecb3f9aac882321361e01267ffd2a0e2115755b5148b1f115", Updated: "copied from sheet"}, + {Index: "16", Address: "one1pmcysk3kctszln8n89hzcrgmncnqcdxg6nl2gg", BlsPriKey: "4380ec6b1d4a5ce55d405600c97168b3ac77c996bee12c118b1c8f8260cf582b", BlsPublicKey: "43f5ed2b60cb88c64dc16c4c3527943eb92a15f75967cf37ef3a9a8171da5a59685c198c981a9fd471ffc299fe699887", Updated: "copied from sheet"}, + {Index: "17", Address: "one1xsf70cu7uuu5k6f0kpxp9at8r4dmg0sttzx40t", BlsPriKey: "a9d6f055a98302703a303010a102d2a3133e35a60ff48fe98b95deb6234f462e", BlsPublicKey: "577bac828dacca2acf29f8d38365a5af015b88298482c38f09ccde44f3c1a2d7011f710c4a7fe450d8b5d4e7a6950a05", Updated: "was in code and updated from sheet"}, + {Index: "18", Address: "one14tdlgysvnqcdgwnduttd0y5pp2y7m8cpss30j4", BlsPriKey: "543f6f3718404155529a35a0291a6bb8f9d70ad887d3f5b3703e3c5a00f1410e", BlsPublicKey: "4ce4d4c2f2a4e115d5c2253a4d5d17c8fb4a585280eda890983309595b2bbb596ec71284105c67618f1fb2e7f7cb6f84", Updated: "was in code and updated from sheet"}, + {Index: "19", Address: "one180mfv4dneefp9g74duxhspjvkmcjffstd0sj6q", BlsPriKey: "f6464c7429f588e2a5d2aeeab832c1b23799f65aac80e847557da2a77fd5cc28", BlsPublicKey: "714fb47f27b4d300320e06e37e973e0a9cfa647f7bdb915262d7fe500252a777f37d8d358dc07b27c7eef88a7521ad06", Updated: "was in code and updated from sheet"}, + {Index: "20", Address: "one18ky073zdrrmme3fs7h63wyzguuj6a3uukuc3gk", BlsPriKey: "143c8b169a677ae032190d96d1ed7a0b17bf0ab9bd92d9505baa0f7f78c02309", BlsPublicKey: "457e99a40be9356c4acc53f02de4480927e0c6c0733087a46f53b59744affb2776700625370c09bf4e778e715a5f6e8a", Updated: "was in code and updated from sheet"}, + {Index: "21", Address: "one1grt0frrmy7a8239sg3tygh83nd5q74yymq2ljh", BlsPriKey: "9862b47ef50f2ae9751a743f9c4428294c31bf02d4a5184251f7626ff6087a67", BlsPublicKey: "7e86af118409e2677ab7c3043cd383e98a8ae27bf711eaa57782f7e8e9df5499085dc5ae3e7acc0c4cb362dc6005ab81", Updated: "was in code and updated from sheet"}, + {Index: "22", Address: "one17nfgz8rtgpl3nlws5q9tdk9y3puyqf847az6ne", BlsPriKey: "36df31f96a73bc544e77047c5e8b44fad88536c2c1ab115b090ca08baf47e967", BlsPublicKey: "a32c1ba4c89ce5efe3d5756952489f7050bb1123fe38776168b349c01d15813520f87741a24bdba4372caa71096fb308", Updated: "copied from sheet"}, + {Index: "23", Address: "one12tthayx2u7g262afmcfca29ktnx9aajjd8uj5j", BlsPriKey: "e25738909ac68cf0d24939b916d887336ebb51d717cc52fc91728e53c086f722", BlsPublicKey: "bf1899cd9eab89216cbaed1d126f8b2f6b482132787f0d34020cfe8fdf0af8aff2c38b9848c3726745bbdeebd7d6bf96", Updated: "was in code and updated from sheet"}, + {Index: "24", Address: "one1tqa46jj9ut8zu20jm3kqv3f5fwkeq964t496mx", BlsPriKey: "aabea27114663edf6d9c9858335a006fd4062aedff850609d95eb4b8a20a782c", BlsPublicKey: "edb61007e99af30191098f2cd6f787e2f53fb595bf63fcb4d31a386e7070f7a4fdcefd3e896080a665dc19fecbafc306", Updated: "was in code and updated from sheet"}, + {Index: "25", Address: "one16f3f9y4sqtrk3eq7gnagr4ac8p25rf08u0pxxp", BlsPriKey: "76608b9c7ddf8cfef53e3dcd825c099e473b854a1b7a378e5a685ba96c3f5f3c", BlsPublicKey: "bde72966189e7377a4f08fff82058fcc508ce1f7778e89c3dab42064bc489e0966c6371f4b1a1857cfea19667346b010", Updated: "copied from sheet"}, + {Index: "26", Address: "one1zgmd5s6fyv9rm2vuf3augqf3ucnp9a2j0h09u3", BlsPriKey: "bd00de690c82e5a3cb27133cf1b083cab279487a96679bf8ed93b1e5cab13300", BlsPublicKey: "15efd5a3af35b9fca2b0e7264b585b47b0f08d9658ac11df3ee5237be634d2fbfa610bf9bd8eef5fecb38828e250340d", Updated: "copied from sheet"}, + {Index: "27", Address: "one1teymhzlyuxv73hw78gy7vlfuyv3e4stvsmer5l", BlsPriKey: "7ba0adcdf7b715aa71f09bee0a90fc20318341760c4d8c271c0d7b9d0b3fcd12", BlsPublicKey: "6b3469bfd08d2a690f731f97d679e15ff565d4f2911f5875f058062239109ba1e3c5a73bfb21b034db9b28ae3f564001", Updated: "was in code and updated from sheet"}, + {Index: "28", Address: "one1thzdvxjya045z4ysyy6z52gt6unxyw3c2wzjrr", BlsPriKey: "133dd59cdcee03f41094311d99cffa984297be8b915c7a12860b4076087bb527", BlsPublicKey: "emptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptye", Updated: "was in code and updated from sheet"}, + {Index: "29", Address: "one12saruhnv9f63dqhuadjq3vhqm3nwyw2ac40uyz", BlsPriKey: "39f8b1764f22cda0d355f82e6282572519c8e158b97cf903ac8c64b7433ca26b", BlsPublicKey: "b443ad07d019e1ab4c1cf8d18d493f34003a6e22d28b79218ed77d072925deb852bf74488bff67ca0126738aaf58e08e", Updated: "was in code and updated from sheet"}, + {Index: "30", Address: "one10dw0xnkm6qvpmsmeszw5wn29et9jmek9sc6dmw", BlsPriKey: "9aa34ef10f2da52a7d3418e56f56d4b38cd1fe8b6562df16196fcb4497d0af6b", BlsPublicKey: "3f9c6d55095433092416ed39bcac4fb1c7aee67f7b658c09266201a094708f7101ae8dfdddca13ed3021ca798f731992", Updated: "copied from sheet"}, + {Index: "31", Address: "one17nacqwrnwgq7pk8eehn7j6jphxt0draqpkztpf", BlsPriKey: "849ccd91efc2f08069aaa14da598625b98da9781d82795eb454645e76e7f3c36", BlsPublicKey: "emptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptye", Updated: "copied from sheet"}, + {Index: "32", Address: "one1mk6g87mtgcyy95xp0v87q0srggmusp950gpn3w", BlsPriKey: "0c4935f170ed7485249d2b64cd02d4128b4b582baf8107b208f94c6dc7bc5024", BlsPublicKey: "325c13b66bb05cbd7ec95d78e754cde2afdfef83490253ba96a64b3be73fb862bab57dadd42816462a0aafa48fa08d06", Updated: "copied from sheet"}, + {Index: "33", Address: "one1df49l0afjgltkaheussp8e7y708ac9zuyfpfle", BlsPriKey: "6d1075344744fe303f27baf4d4bf05b5d2237c1ee70b461fef4bfa9d8bd98f27", BlsPublicKey: "e1febbaf5af29b651662f1f2ff2af2ef9e3d9ca324c9c8526f3486a148293fd5d4b591b63f1912422a4ea162758eed12", Updated: "was in code and updated from sheet"}, + {Index: "34", Address: "one10hzlc82dhc35nz75srutrhqkk7vvvyjnewclt7", BlsPriKey: "7d27cd0139e748b6eeb2f66f2225b63ddf9760a7e7c38a8cb61d8420cef76039", BlsPublicKey: "d4dd2fd73bf050cced2b8c92255e0a907abec0b1e1470d558f50a7729e14b6fe46cccfb8d2b696c23b1419d7b49aec85", Updated: "was in code and updated from sheet"}, + {Index: "35", Address: "one1dsgmswzkspx3at5gywltd97sj45lapaqmk0hzw", BlsPriKey: "69a0fae29bb2073ad59182c31690baa7a8a459179858c8c75c206762b77d5031", BlsPublicKey: "934fe59ff2fd6cb296885e35d7e722a8c4da27a65a8b81bc73d82fca822f3a2c35ad6b7b5f70f6992f1f92d5d6bbad8f", Updated: "was in code and updated from sheet"}, + {Index: "36", Address: "one1w2m2al52exugww4c2nn0fl2gqx3lfvhsq3x4k3", BlsPriKey: "c317068d813f0c28aeb2dca676cd079176cbc960054161086d592b868ab64b2c", BlsPublicKey: "6558c3beb184401ba26e00cb10d09a01ead04581c86074a596d0c80cc2ef05c9fbfbb6068ea1f556345e6cb39e2cbb8e", Updated: "was in code and updated from sheet"}, + {Index: "37", Address: "one1zzhwus03x3j3fgtust0v07k7rf583rrp84zdet", BlsPriKey: "27b8df104400b9542a6690f41efdc05cc81973d59378da15d27f6890e1934563", BlsPublicKey: "7f01b62e63b020c1406558153393f346230e7a87d4921bc756bc08e49b88f749b45bb624dbe79e4d95bd83bfbdac6605", Updated: "copied from sheet"}, + {Index: "38", Address: "one10z5d98vpm5pvzw32vpma3p70vcdk0ckq0znapk", BlsPriKey: "0c56f4f9ea21f3af7148662f9188e686aecaa91e9d780a0083c77bb3700cb11e", BlsPublicKey: "8fcd36c080db9b9168d5f3e6b6854546544f62fd0b224c79c1e12e3b93674bec513cd5fc1e9748690e0e5d14a9066c86", Updated: "was in code and updated from sheet"}, + {Index: "39", Address: "one108uwrdejhf3es7rn6h4cdjqnvnpv75pp7t5ne9", BlsPriKey: "5ffe9146398f7e2d45ac7a162fa4e209696d44d54565c3ebc8c3ef6bff680322", BlsPublicKey: "c541fa6d4d97bcae0e502d5dbe64ba9d2b6b28fc8cf498728ab249d9c9efaa5148eb91b0d9827d7effeb36720f0ab813", Updated: "was in code and updated from sheet"}, + {Index: "40", Address: "one1sp687xe0kk93ngp8kaxa2qd8yjm56wjmup8mf5", BlsPriKey: "041a40e16c3ddd45c0277237f19cab5d4d7798f55be1afb6c71fb74ab2abc66c", BlsPublicKey: "c48e26ce1e845cfbb032fc08b91cbcb7caa8cfae8f28db54e71271cd53423a37eed40e75884c21cf1b47636fdf77058b", Updated: "copied from sheet"}, + {Index: "41", Address: "one1ctd33zz6zh9p5nh8w6qzeldq5agpn5gxmq2lsq", BlsPriKey: "d61d338a1339330b7601916e4b0dc738015098017fc32e769a303755d25ea431", BlsPublicKey: "a0ab990e83bb3fa72158b776b7146a7c603d878c4b24b426a70b2cc60d81fb3d6f59b1221043804893a474e1cedc578e", Updated: "copied from sheet"}, + {Index: "42", Address: "one10ap00fxkdupc0tnh5gvaqapw3fcxyvw2d22tlx", BlsPriKey: "04471a89250fd9bb85682cadcd5738a1695c3b20a4ee27a768f90cd13ff9d207", BlsPublicKey: "bfa025fd7799315e528be8a985d1ab4a90506fca94db7e1f88d29d0f8e8221af742a0f8e9f7f9fbe71c1beca2a6c9690", Updated: "was in code and updated from sheet"}, + {Index: "43", Address: "one1sq34zq9xnxans2cj5hd43qvfhcjwtxlkc3u2a2", BlsPriKey: "7e5bffebf251c46c8b5183ea44cc0a72b3787be0b66cddcef0d8e915503f9d25", BlsPublicKey: "c8e219cbe0a03c6d97365584e8c239eb55605e61b5f3a4810f75e655b08d6b9dc7816af45e21c72021824011d4d67809", Updated: "copied from sheet"}, + {Index: "44", Address: "one1sgcpjc405ueglhp5udsskjxcn8crrc2lmuf35c", BlsPriKey: "4781312de913e9320bd558af66e67ae47864752d0c1fe3a0e1b65915fd63244a", BlsPublicKey: "dc9e4e6c9e4782012ccf628e3d3e7c1763ba2f78de99b98b89fac63b1f4375e288d5e155e9ee64fe126f78ce0088db10", Updated: "was in code and updated from sheet"}, + {Index: "45", Address: "one1n9ecmpqfnf4aztcq245nqqmnjn7pxamwmmuvg3", BlsPriKey: "51d0b5b2324b69601ae4b4bdabc3130c7afdf5219ec867654f2d87675c8ae970", BlsPublicKey: "d468f29d36b05b647412d8fd975e0625ca959d5f04ad9a91513e153a2a249158df2b421d29730287848b6a7a674b3492", Updated: "copied from sheet"}, + {Index: "46", Address: "one1s7s40ku4ms63066h34xwmm5j5k4jwk74gml5nx", BlsPriKey: "65ff7b77d6b7e2cedaa9f787a94c4ee4c776b0c8f7e4ac8460659541c70b9d6b", BlsPublicKey: "9b58fac96afe10ad8832c1752ef35c7169826aeb05505e25002320e63e6200a9c9bc10233a9a258797084122d4b2a411", Updated: "was in code and updated from sheet"}, + {Index: "47", Address: "one1s3typcymaa5dgvfu68jw0hufl7vyu0hd3hscku", BlsPriKey: "7ee0890d586752d8883f28e6602c29a660b8f189524dc2f7120da9a1d57ffd38", BlsPublicKey: "d8bcb7ef85977e33f429374b68ac7e8b1d9296b82a074aec212ba570cfa0a5489df9c020f941039ad48497adc7833a96", Updated: "copied from sheet"}, + {Index: "48", Address: "one1qcecvkv9w77rfz75t0s7x8xpgtw0nwve2vk2sv", BlsPriKey: "a60338bcbc1b33493683435b8133b0f17d9d8303a7b00b6507bb097fadb1c82c", BlsPublicKey: "d12e2b82d430ff6ce19651363bc29e438169ed1cd481adccdc0a82b74e789e18f330b7be9c1e399cce30506ec726c80f", Updated: "copied from sheet"}, + {Index: "49", Address: "one13hrrej58t6kn3k24fwuhzudy7x9tayh8p73cq9", BlsPriKey: "694db80220180cbb64614fc6545ba2ca9ba70b75e89bdcd99b1f1cbc52c5cf4d", BlsPublicKey: "23ab4b6415a53e3ac398b53e9df5376f28c024e3d300fa9a6ed8c3c867929c43e81f978f8ba02bacd5f956dc2d3a6399", Updated: "was in code and updated from sheet"}, + {Index: "50", Address: "one12vyznqd6lz6wwr9gkvd6q5zy9sswx792dh2eyv", BlsPriKey: "8767c541772043e0b4da32500f8e0443db2fb41c794411d8b3b4e5020d885504", BlsPublicKey: "90afed6000f27a5c47f04bf072efc3a7e75a6f75993c91a56a29d3c367f0952d97620fecd06c879c13d1068d62128506", Updated: "copied from sheet"}, + {Index: "51", Address: "one1fdtcrkpkhm2ppnu05zmddgqvledqh7g6r2tgdy", BlsPriKey: "603e23f327d4afc4d347939c0bcfd56896f9850ceb38ff33906c0bd6bb361837", BlsPublicKey: "493fb42bd1fa4c0e01e88002d2a0a1f443cbc9e7ea17536e8a83ae5c911530b2534d00b1d681e253318be7e1fab1f193", Updated: "copied from sheet"}, + {Index: "52", Address: "one1j7urgfm48rj9zl6rl8s3lg9mawkhcrf78mqdsz", BlsPriKey: "62b9c51b728314acec770c067d1aa47e7635ecbb1f2b90e3be2c34fdbe03fc3e", BlsPublicKey: "0a8599d805dfdf109de0fb849e73c12d4738dbe5de3f01093626947207f1611756382e8e743dae22b3b4e5fe67ce6d16", Updated: "was in code and updated from sheet"}, + {Index: "53", Address: "one1s4rypls26kmzg03dxkklmpwhmv8u4nlh6vqkdv", BlsPriKey: "a4eb5c77e47a86d78420b526ff4ae973205d47f954adf8fc667b4c141ef3da5f", BlsPublicKey: "0d42e7e1c9ef4c1425bbc767b172154ea3e3d630b23b7a92d5cbceeaed3652e9c3ff2779bdce5bb85f1d328458b80117", Updated: "copied from sheet"}, + {Index: "54", Address: "one1uhqaf9jgeczmuxs7ydzfeevwnt63ftps752cnr", BlsPriKey: "ab924789a57655b1df82a80138e3ff81c82a37b561bd17d5ba3f8e1df9cfe624", BlsPublicKey: "9c99088bf4e3d367183036041a32e534c2e045d9af2d4d9591252a74ab38b878d89f2863a1f5934501a8e9cb82b08b07", Updated: "copied from sheet"}, + {Index: "55", Address: "one1khuc8sclm8lr09e0r64kf3jjt684leggzp22h4", BlsPriKey: "ae9495935096d4a403e056d46732b80cb8053ea5e3edab5b947f19bc2058f35a", BlsPublicKey: "3af05ef78a3e2b4ef4f2726284705300b88066f350506027ed853dd96a270671b46cd4b0ec675f8c9ebcacac7f99b984", Updated: "copied from sheet"}, + {Index: "56", Address: "one1ee39d33k3ns8wpjae6kdm46620m0v2djhacas0", BlsPriKey: "6055a4efb40f25b0e800ecf79b99e364db2d92594530d944b29fd9e718f8b751", BlsPublicKey: "514b80600fd2b70fa83dd0a49b526289acee59d95ebcc50e87e05acb690821da064e43c9664683b519352861852de401", Updated: "copied from sheet"}, + {Index: "57", Address: "one16jvl43d059a4wpderqu82wlm7t3qzw8yta3wgn", BlsPriKey: "5363d581399692d5eacde5c42bd5c4d177c02451e49ad0baa7535377013e665c", BlsPublicKey: "f7af1b02f35cdfb3ef2ac7cdccb87cf20f5411922170e4e191d57d6d1f52901a7c6e363d266a1c86bb1aef651bd1ae96", Updated: "was in code and updated from sheet"}, + {Index: "58", Address: "one1xhwspfzgv3vh5fp9hxwngv8tvdj2qr338lmavw", BlsPriKey: "00bf369ebee045f0b6042d7a704d75aae2dd15b516e66a0d576ce7b32dceb70e", BlsPublicKey: "014d802636d36a50a687512b4f81f4d93324518c8099884b90e5467fa3d7f7fd52ed2e65892db70edf6df4a30530a78e", Updated: "copied from sheet"}, + {Index: "59", Address: "one1ksqcladc3r5s90v494h9tfwdhkx88tq6j549f6", BlsPriKey: "7daa79d0aa2f62343c8a4bab592bf444ea141ee9ccc8f9515434bdfce72d3f24", BlsPublicKey: "286c00f71145c770f2c791492b3f26f7150ff2362780755530539c02c9115de76503ad367ab981065d3c7aa658140b18", Updated: "was in code and updated from sheet"}, + {Index: "60", Address: "one1780wg58e86rs38we6ze2ts930s0qmmu40vmzya", BlsPriKey: "ecbf09caf2c9dcc4688f98d43a198a16da25162b249f31995a9ae3b4fa17b82c", BlsPublicKey: "109c9d8364b1634802b53be754a5faea7c6f5655f0990de979038462ada5cbef325c36032e6673d30c3349936b0bce18", Updated: "copied from sheet"}, + {Index: "61", Address: "one1a4nhuqsa7d2znx8yq7tsuyf86v6tuq597y925l", BlsPriKey: "b55ece450a0ade36f98ca73906cecc543ddf96858fa6577aa86b3967889f6673", BlsPublicKey: "7f24f0c9af2239090e6ae593d665589651f4d8c4f5bf8ad40537ea8d3e912da82588ea3b505991b2aa96057015d1458d", Updated: "was in code and updated from sheet"}, + {Index: "62", Address: "one1r9hjnk6zmnkageyvvsypcw2p675x7qrurjeaan", BlsPriKey: "57b9b2a48fe3d24e80d9e616a45a53d517e222fb90559bd0fe470bce027b3b29", BlsPublicKey: "3f74037361a915ad7718d96e225e4803c9b8a31bc287f246d6eb84328c5bb63ccf32975644d6a74b3820d3dc7811e592", Updated: "copied from sheet"}, + {Index: "63", Address: "one1c0aau6shrtxqgenpf5ymtrspxpvw0sxj0c7hrq", BlsPriKey: "c6582e9c3477926891fe76ccf6eecc024c5249eafccb6c63702c5c8884e6ae20", BlsPublicKey: "ec2fa7a80bb5643958765cc4285eafced0c7be0b7b5543454554f764e187d63ff7952be490428974b8c81cc90db44899", Updated: "was in code and updated from sheet"}, + {Index: "64", Address: "one1c6m2w8t0p3de3cjleu2t2duvspas6366jtf8da", BlsPriKey: "21b550fbae41803181de9625f5b5e5bab1ce8b20f2a2bb09f712ba4718346516", BlsPublicKey: "47ab7b7cbbc5b95ddab000c5d2643aaf9f916d776bd4adb05e509add43d54579f69e3e5898df5dd15a4332112c1b3d87", Updated: "was in code and updated from sheet"}, + {Index: "65", Address: "one1kq0xzzzlrpkzslwfesrgmp5e7umuxl3m3dgk27", BlsPriKey: "a04f434680a86af6bda04f3ddf5ed7d420510890e3966a1f53a6ab7e7286a92c", BlsPublicKey: "7df3e402538cd967ac002d9140167fe2c70f591b487235e5b1929ef128cf93174545d663b1d73923acefc6c629368484", Updated: "copied from sheet"}, + {Index: "66", Address: "one16ru662mq0yh6lup030g09kwwy7g8yfcxc5fcfp", BlsPriKey: "33b7d152eb29324e05d2d2a8f6822901310455fb0a1a47e226e8d09b4a0d5733", BlsPublicKey: "d35d26c704c0094abf6c1b19e1d6ea6021eb20bf347e9c20ff5a710bde93e9d41977ba6eb5191809758cceff59132508", Updated: "was in code and updated from sheet"}, + {Index: "67", Address: "one16295hjtqyr0z22swaqthv7mvmvn2gltnj5gera", BlsPriKey: "1692432c25673c8f5026b0e366142bd4130b9c2ef86647280576fd6d51eaad62", BlsPublicKey: "fca5bb8c78055a4927bb3b8e60917e87dffd00d5f4a818111113c6ddff4e4af69f0d878a49c8f39c0842c15b40d0d603", Updated: "was in code and updated from sheet"}, + {Index: "68", Address: "one16m5r7awa4y2z2cyage4cns4uejxx8rn0gw77ug", BlsPriKey: "5ad6f65e17f463fabb0d30d16956373e017a09c374ad5a180d9c2f6f9b9eee58", BlsPublicKey: "056f7e81e119f343ff72223955f7c007ffeff58dbb6e67bdb99d8c187068eda288b7dfec63dd7dae5546d9da3b89af84", Updated: "copied from sheet"}, + {Index: "69", Address: "one1ha85rtgc4u96v4v9nwam5qhchswx8d579dw0sl", BlsPriKey: "633b087412f23e3ae86590f790c20da7ca481528b9a5266629a84ed71ec9101f", BlsPublicKey: "5655e508219092659e9440a642f58f3476a09539b552dd7d5d5fa4f1fbae006347ad7a3ff3ba59d3996a724822ca0e87", Updated: "copied from sheet"}, + {Index: "70", Address: "one1mr3mt2ra8mwpr55uv3ymv0lmdy2s0w4m5nt0jh", BlsPriKey: "882457d412de8260589d1a64ee4163fa9d47b40905dd03b7004d705cd087be58", BlsPublicKey: "9bffcf238da1966163905e83b8b9b4193fc0a0408091347f3618d652f67ce5d40991381f96e85782ad94c705177c3082", Updated: "copied from sheet"}, + {Index: "71", Address: "one1u24h3m8ny5yyfpv40vjen4fme72ye09gn5mr9q", BlsPriKey: "e1f32d06cf1d98689713adf15e0bbb3f74b9db423ffd0e805c2bdd3787579507", BlsPublicKey: "emptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptyemptye", Updated: "was in code and updated from sheet"}, + {Index: "72", Address: "one1a37yjkrxdzwkkl3ntkqsv305grcklpksxkwsrq", BlsPriKey: "7589d11122b7216c6d43a5775d0e831e1a6326199059fa74c1de739826df8013", BlsPublicKey: "afe3e92e45d8e49b8b90957cd8cd6f312d0588d823d761ea2ef0248c9baebdcede4565054a56483edca065c0e72b5d16", Updated: "was in code and updated from sheet"}, + {Index: "73", Address: "one1528xlrfresl7wl2nr37kp0tnlr7hr3w8u5y4dp", BlsPriKey: "4b0f6878f44d2d21eb77d42206cc63da035e01d97b2108a0afc24b7340ac9122", BlsPublicKey: "91058b91d14936926f279a407dcb679f8756a51b3ca68cfed10c2c67aad13d1dc4bce417cd8a6553d7343bc0aed5ef02", Updated: "harmony"}, + {Index: "74", Address: "one17y8k8adagmzc6t54xrnl3jmtgvmdqh2wzexn3x", BlsPriKey: "78d4ff9d2c003615ac143e7719b9043c2575eca6819ea334e3cac16a05253545", BlsPublicKey: "31c2be76384a46b596943d5071300d18f1e3ca3cc4418557cbe7645f141d163a448e750f876ace5663ac5cc8dca2e78e", Updated: "was in code and updated from sheet"}, + {Index: "75", Address: "one1284fqe06amt67j6cwrj6c2yrcjudeq0uygjyq3", BlsPriKey: "2a54d6f2dd36d81cbd34af9f0448ed4a60f9f1743b81f20559a46e658551d321", BlsPublicKey: "2eb142677d24082e1435ac54dee102c9fc9d897c2f87ad9f99a88cac93445be8cc295c6b2ac34c196cd9b6f1b376d711", Updated: "harmony"}, + {Index: "76", Address: "one149aw0kne2qwyxkxhz9v0msgf00lndvvdjne4rq", BlsPriKey: "6f9521c771f6d8eba15e5a611c181d80617590ae6249a159aa664d44b043220c", BlsPublicKey: "00508bf582665b3c75442231397f061ac3b9fedc5edc3343a465d9153ea7eca5ed97c33c097ac7a75533a420149dc492", Updated: "harmony"}, + {Index: "77", Address: "one1lhyk86r4a2v7gd8yhq2m0k9l2pk64y3z75zx8r", BlsPriKey: "d1378a5060854c0fecafd6afc634485e94d72763a5240af6da0f8722c703ba5c", BlsPublicKey: "6bf1696e1fb4c52710a42ced76e0deb458a92d1539efc4632f88f51aa882d9685ea154d126fdaa375add29a90ebc4c87", Updated: "was in code and updated from sheet"}, + {Index: "78", Address: "one1flv4r3udp08az7axdcz9me50kr2r4z65c8s39m", BlsPriKey: "27e8e932adaf0d464767a27f8e3cd18ca0bd144fac435a254ff598c2ee0e0870", BlsPublicKey: "306a3077bc5dc0914a1a08451e6d68072e5ac25cb9be3f4a272f9870614d36f5e96a02e6e571248abb2f174a144f3989", Updated: "harmony"}, + {Index: "79", Address: "one15u2v6f56pj3rzvwge4dwl3ylg5zh3395nzj57y", BlsPriKey: "69f67cb5cbb540362d70f1304df641bd66d120c02f8d74b66a0b148f8d16cf1d", BlsPublicKey: "43b6dd212b5ec9aa1c8055653813f7d0edbeb4ac8e1b679246efcfd709965df0ab6537c791423ec14a5f05a47cbd110d", Updated: "was in code and updated from sheet"}, + {Index: "80", Address: "one1kyyt7j29h4uhtnuhfar5wmngntx4gterrkd8q9", BlsPriKey: "f3f2f59ff197adfcc865b89346280c23078f85181de9af836146a4089945574c", BlsPublicKey: "f400d1caa1f40a14d870640c50d895205014f5b54c3aa9661579b937ea5bcc2f159b9bbb8075b516628f545af822180f", Updated: "was in code and updated from sheet"}, + {Index: "81", Address: "one1mgwlvj9uq365vvndqh0nwrkqac7cgep2pcn6zl", BlsPriKey: "ff9d4e39dbaacfa2b8aacc9819ab369e99b78758c890f44b09511449d7f15e58", BlsPublicKey: "ca5b587ecbc68c1f9af60dc6452f98705073029c27422a37898dacc3451594dcd2da7b75d62a387e3520240ae46e130e", Updated: "was in code and updated from sheet"}, + {Index: "82", Address: "one1c4w9danpa5v9zqurnl07lkqdcwyn3yfm86anqu", BlsPriKey: "c65c08f7d6aba9dc11a4bf2ea16552cb55890d4435f6eeb9950da25f37223f4f", BlsPublicKey: "817d92d1141cf3dee3dd9b522752f4e515fa3d487dd4627951ba3e47a2a2704d1499912b1783cd544cfcdef3abd41b13", Updated: "was in code and updated from sheet"}, + {Index: "83", Address: "one1kss4a906z654ujdswn4r7uwq5pqd8m3mvar9ng", BlsPriKey: "f35d6cff226839b0fcec20a2dbb73f5be3a438476400c3d6a375b3c01859ca3b", BlsPublicKey: "1ec7cce211181f0f942b5ef76c921b88600614dafd42ca06cb1a7b74f69e56f2e6eb9376aafa52519abce095b761068b", Updated: "was in code and updated from sheet"}, + {Index: "84", Address: "one1l7m0e50v0fus6e4wp29fprppj9dyxekhr9qaak", BlsPriKey: "5c44b45f890d8f7e0dfaad51ac48e2c1f887c95636be252413d9a62669559a33", BlsPublicKey: "6fa5da80c6d7c6e22bb98a590b5c380694e2128ee2a5b11379b0f648395fd0af70e8edf834de7523b4388affa329c68c", Updated: "harmony"}, + {Index: "85", Address: "one10vy4gdzga08vhenqke36x67fjqukyzk6d4hrqw", BlsPriKey: "d9d7b89c882727d92f232be10cf0a3d118422e9512b0531548e8072cb9354806", BlsPublicKey: "445ef889e5f294f1a5d231ff0de6fc25f228145c36d813084c9aa5e33bbae0b73cc71efa16b88f0490a80660564d2293", Updated: "harmony"}, + {Index: "86", Address: "one1mtvr4rtt7zwp5xwz65razvy54vzxn57y8wd9um", BlsPriKey: "35631f61bb4225e1185454802e2611538b931e4493071923ee8e7da6dda7f33c", BlsPublicKey: "af4cbb5b185473e667b1004a59aaf265430cd6fc1d2578bf32e88e9c639cd839790f12bf4e58b9f685daf3b9ab3d7001", Updated: "harmony"}, + {Index: "87", Address: "one1ahw70lq9sqqygs8f7zdrvw7zd796w5n48hc5xh", BlsPriKey: "0933aab0cf0a15d213c7f5fb2a56336921060b6fcb90ac2ec61cf2d13d185226", BlsPublicKey: "f0d6a1d78c4817e451fb242b7501b23a9e9b5214e6ae8695a00e344a2f6662dad96baeb4f983d5613404795fae71e80d", Updated: "harmony"}, + {Index: "88", Address: "one129s9f828f538jrjca2wwlwphsl5k8rlzjdeacq", BlsPriKey: "c56b16437455c67eb884d82a945be089d1c3f8b355b64258aaaaaa58dcb2a834", BlsPublicKey: "eb4d1c141fc6319f32710212b78b88a045ce95437025bfca56ec399cdcd469d1c49081025f859e09b35249cf2cc6bf06", Updated: "was in code and updated from sheet"}, + {Index: "89", Address: "one1zjjul68lhv8hef7angwvakmc37evv8gppraft0", BlsPriKey: "9b528e658b80066eb1785b4cfc2218c103741aba52ae1ccb0dbb88b270d8c41a", BlsPublicKey: "7bc9bc157947a0ce4b8ed57161b0e873947098f25f3d82dacae3e53fdd0a845638c797b12bea1929f1bfe9088fbe7c07", Updated: "harmony"}, + {Index: "90", Address: "one10746sav20n8h4gm3sevj3vfydtpv6vpksv2065", BlsPriKey: "0c9cfdafc47b0aebcfc94fb6cf6d40ef8c1a12fe1c4250e949a4bebc821a623f", BlsPublicKey: "ca95dc563fc804a9ec409894d03a4e7613edee62d4cf07e0c4b444d563e38fcd84b8a0ecffc76f46c6c0025b1f45948c", Updated: "harmony"}, + {Index: "91", Address: "one13gu3wvxga2jkpg72k5m4lye6nktxzu7a5vsnec", BlsPriKey: "078d029f3101cabfadfcb8aed4bdb0827cd495e829ebeed78548625f3cc8d466", BlsPublicKey: "8fb9de02c7f9b8baad2905994c6d9f559b99a72fdd6aa20eab692bb1fcc25c712ba7410d4dae8dad182d714e80d7d787", Updated: "harmony"}, + {Index: "92", Address: "one18683c2vyr4xdv4wd3ley8wd250pnmxn346s4qq", BlsPriKey: "7faca2722bc9a7d578e6ee053d9eb57796a91ee937b1184543a00c9587577526", BlsPublicKey: "63413f65e2955e98ef71f517a5d21c5c30c1182b9e6e669205df74fbeeba88e058fb239ada9d29603bcb2df613ca2d8e", Updated: "harmony"}, + {Index: "93", Address: "one10ha8a07jpxlla89gcmlu7k9j3ra3sqdyq2c620", BlsPriKey: "e1d8c272972f6a52fa9fb868f99ed60669f6f9f89e235ff0d82bef022f29b31c", BlsPublicKey: "03ed4996a4808aa1c9672dcbde4262311fcddd9d291e7f0b96d5fa4968831454479584d0ce0c2471557f506f189cd388", Updated: "harmony"}, + {Index: "94", Address: "one1hrdt5e5lepygmj2vfthjzauuc9085lpnfjhha4", BlsPriKey: "457b34ae2c6a04e2299712cbe1a53d7c17d6a9c3474d0d2cedd77680a8180623", BlsPublicKey: "c6404146b9655332ff5e2ad4877c2689658bb037e7da9a4114806a2ba8b1c9bd0af8062e4cba22e68466336f3dba6a0e", Updated: "harmony"}, + {Index: "95", Address: "one1hrg76d5743k5x8jmyu4zyn232fzdexf06w32s3", BlsPriKey: "9e46c88259e4082297e824c76779b9856cbbd5f94b54acab2656b96a878bb00f", BlsPublicKey: "930590243131160f8007ddf0a8107c01c5600c57b8b107ae21a9c0a7e71ebdbcf820230f7cd2a00eeb2777f9f62fed03", Updated: "harmony"}, + {Index: "96", Address: "one149aw0kne2qwyxkxhz9v0msgf00lndvvdjne4rq", BlsPriKey: "518f9b3674a0807b84a3f8bebf0585a4204552162d1013486d22b1215b348961", BlsPublicKey: "00508bf582665b3c75442231397f061ac3b9fedc5edc3343a465d9153ea7eca5ed97c33c097ac7a75533a420149dc492", Updated: "was in code and updated from sheet"}, + {Index: "97", Address: "one1df4tldae3amrkyrf96tg9pqccjvkjetattl4w8", BlsPriKey: "a96bea1010cec516dd489d18d490507a41223099789bf6fd068cb17d2f66eb4d", BlsPublicKey: "3fc212e1bb7594018c0882d2aa1818e9401209f8e41cdee613fd6bec096872d55c01ea02e091063f6ce49dbca49b3f14", Updated: "was in code and updated from sheet"}, + {Index: "98", Address: "one19jtrujyvqdvdn9wm9tne5d4vrwvy36y69msczs", BlsPriKey: "7c088b58aaabab8a16b5996db32ef8a0dba8b99202b6271f4322f3f4b23bd009", BlsPublicKey: "bbd0b173ace9f35c22eb80fe4673497f55c7039f089a3444a329f760f0d4a335927bb7d94a70b817c405351570f3d411", Updated: "was in code and updated from sheet"}, + {Index: "99", Address: "one1f40kwnze67gepxl2m5tpljr93exrhpehcfjs6k", BlsPriKey: "454f45068b784632b15db9c212a49b9d3b642f6b5ca53d09b86fcb2c84a11738", BlsPublicKey: "92f967adc41fa54735dfee2087bf0743ec9b4793174f8cd515c366daa20a3dfd71a62f7658f9ebcbf2013d3fa22f8f96", Updated: "harmony"}, } diff --git a/internal/genesis/genesis.go b/internal/genesis/genesis.go index 907598d6c..bc079e016 100644 --- a/internal/genesis/genesis.go +++ b/internal/genesis/genesis.go @@ -7,6 +7,7 @@ import ( "strings" "github.com/ethereum/go-ethereum/crypto" + "github.com/harmony-one/harmony/internal/common" "github.com/harmony-one/harmony/internal/utils" ) @@ -14,9 +15,12 @@ const genesisString = "https://harmony.one 'Open Consensus for 10B' 2019.06.01 $ // DeployAccount is the account used in genesis type DeployAccount struct { - Address string // account address - BlsPriKey string // account private BLS key (To be removed) - ShardID uint32 // shardID of the account + Index string // index + Address string // account address + BlsPriKey string // account private BLS key (To be removed) + BlsPublicKey string // account public BLS key + ShardID uint32 // shardID of the account + Updated string } func (d DeployAccount) String() string { @@ -37,13 +41,14 @@ func BeaconAccountPriKey() *ecdsa.PrivateKey { // the account address could be from GenesisAccounts or from GenesisFNAccounts // the account index can be used to determin the shard of the account func FindAccount(address string) (int, *DeployAccount) { + addr := common.ParseAddr(address) for i, acc := range GenesisAccounts { - if address == acc.Address { + if addr == common.ParseAddr(acc.Address) { return i, &acc } } for i, acc := range GenesisFNAccounts { - if address == acc.Address { + if addr == common.ParseAddr(acc.Address) { return i + 8, &acc } } @@ -61,489 +66,408 @@ var DeployedContractAddress = crypto.CreateAddress(crypto.PubkeyToAddress(Genesi // GenesisAccounts are the accounts for the initial genesis nodes hosted by Harmony. var GenesisAccounts = [...]DeployAccount{ - // 0 - 9 - {Address: "0x007579ED2Fe889C5255C36d4978Ac94d25811771", BlsPriKey: "744df5c4bdc246c6fcc414a72d0311c8b3d2a1aafd2de90414f499067a6d8828"}, - {Address: "0x00F98965458a35f3788C45A095582AB18A5ae79c", BlsPriKey: "1af3d58cc5f52a81daaafdffcd0a249b66f563afddee282f0d9440e1f54c8d01"}, - {Address: "0x0102B41674C3ac2634f404d8c25C25Bb959fE952", BlsPriKey: "3ca50987ca2406ca7990cc3946f0e0cd9041fd3caae7601a63e90315f7335e2b"}, - {Address: "0x0178A7bE4399c1968156edE4f52ae91953ab9B63", BlsPriKey: "8bfa48f3c35023a7a80aa11b55ecad4a22bb90f193b7586cd095028dff0d8e3c"}, - {Address: "0x0215c51A3d67Eb1e949bD1Df8b74D3aef097e92d", BlsPriKey: "a42c05cfb5552baae0100e5887664088ed29c2a43c449e2ebc7ebc57dfd75a6e"}, - {Address: "0x021983eA41fbeeB39F82a9CAf1A83476F0cFeEDC", BlsPriKey: "cb2f6f4afd3746b90ce6d6c47475dec4a3b7ac8eabdae1eff577cb0f7e025b3c"}, - {Address: "0x03d1a55eA1246efB257D49D9286f7D370bd09c97", BlsPriKey: "983fc83da2c1ecfea6dd7c782b46c1206bb85fc27a8f53c4936d6efec47cc214"}, - {Address: "0x055b95d5205B5711099C32626Ea61481779a2233", BlsPriKey: "540e6fa35dbdbd519844fe1f1ed8b9ffbee1706c6a9436b6ce90190495939d09"}, - {Address: "0x0566729A6FCDda16287777baB5D4425AA93bB0Fc", BlsPriKey: "3b89483eee51b4fa343986e79aac7f6dadbca933cbd38afaa76c4d9f631b440c"}, - {Address: "0x05bA7FcC4c1d7286f7A3d5552DdF305677338c22", BlsPriKey: "65d7c37bbddf3b25d754ab4cbf62bf28da338c2e84535fb39519fc50a8451a69"}, - - // 10 - 19 - {Address: "0x063893E8EfA148E29B914702AD6A9930d41C8F13", BlsPriKey: "022d1b5600de11ee0b0a8e48627d31aa368164617fe556bb9178251a66164d01"}, - {Address: "0x06693dEE3d72a30075E7447b18c6f3ed8AE62174", BlsPriKey: "0e0f6d48b29cb273a667121338f6d7f8e50033a1b08b791f69910695f641194e"}, - {Address: "0x066B40c45D06eEFE8Bb8677fdaFdaC5C8dF9d09C", BlsPriKey: "1bb48fedf4dd6011757f3925f686e20485a876badde9c48cc3ee4bbf4b6f1d5e"}, - {Address: "0x079C1FFEaa70Ebdd2F3235b2F82BeE0b1101f092", BlsPriKey: "0c705c116f081fb8b7c0cde45e2027f17f9f7ccc2ec31bb15449db6978365022"}, - {Address: "0x07Fe4B973008c53528142b719BdfaC428F81905b", BlsPriKey: "71fd4af428fe1751286882e48777df17726d84c308f66de1575b2ca5705a3825"}, - {Address: "0x09531Cea52595bCe55329Be07f11Ad033B9814Ee", BlsPriKey: "0a596f0eb4330ef8d97929bea498d9a5f10597717616284ba043a55223658e0a"}, - {Address: "0x0B4B626c913a46138feD9d7201E187A751DFF485", BlsPriKey: "eac96664440eca19ebf1cd5c2e83aa2c1b033ab94cfeaac43d5b28f36f858627"}, - {Address: "0x0CCa9111F4588EDB3c9a282faE233B830dE21A0D", BlsPriKey: "0e8fd28fea928ea0c064d7499f1c905b8be069200f963387d5d97ef98e602311"}, - {Address: "0x0F595ed534b6464eB2C80A037FFba02D23AfdfD2", BlsPriKey: "93a86c3211c02a5f4e1ffdd77dd319a673007ac93c38abd1e97d3d04f690e23d"}, - {Address: "0x0a0b8c48e42c540078fD99004915Be265f380dB7", BlsPriKey: "617b9b811ab0479458119af16c143b5bb2296176ba61561a9f91e6b1f5fd0a3f"}, - - // 20 - 29 - {Address: "0x0e59b767D5E74cf7B29Ef9bEc3dA4c402d357C6C", BlsPriKey: "cad2833502ccc3c4e044079c0154a4014b4f769c199f275b227a322aa9a41d39"}, - {Address: "0x0fAAda81c203C74CAc786786f7D428477a04bF9c", BlsPriKey: "bd83f3cd53ebb15ff3a4a320ccaa4223839990c9cf846bb9014025c8ebcf060f"}, - {Address: "0x0fd228bdFbe9ad0c898e9A0Fee2E6FB01f596F0d", BlsPriKey: "b71c9bd6a700afa659bab71ac1121ad86cc843d1c3c6722beb3ac6683d92c866"}, - {Address: "0x123FF831333e2662D00c60A2C46f7196204506e9", BlsPriKey: "bf119ca69fa1802ac2e60b2c2cbf9d83109608d5a0d19fe286d6d8dbbc64104d"}, - {Address: "0x1240775288d0EE975583A2A7022006539dADb354", BlsPriKey: "122ab3a111343a15a7111c1d7255f436c3cc81d1893d51e89a47edf0c6c4d929"}, - {Address: "0x127b8Cb71Fb78338d9EFFe47bB51c2EAd3995378", BlsPriKey: "4d105d4d5e1bbe49d29a87e9454b89e4324f4a6971b70833d70fe4d731970145"}, - {Address: "0x141B0e0f05739B7B784654E973e9b9146473aAb9", BlsPriKey: "29b13696228a5ff6fe4f6bf941cd18310caf72fdfec62f291cd68478054c313b"}, - {Address: "0x1492ebD0EcfD54B4c211b37C8891bA3493c52100", BlsPriKey: "952a0ccf2fbe1ae29e562bc52c9c40fb381f04cebf9186b683db3822705f0b63"}, - {Address: "0x1530A04592F9C3bF06aC6044525f08937ED38edB", BlsPriKey: "9fe110563f98e64bf742a0c54e5c5857738c03ed63ff66580d47215dfc9a3f6b"}, - {Address: "0x159f58a41F13ffC831690D81F308244A3b238523", BlsPriKey: "3f49e1df6b46674bf0179f820f6a6d60303f7b70544bf3316ef48ad7e082d962"}, - - // 30 - 39 - {Address: "0x16451cE5a762038eeA700A6aCd5F796DF3D6bE45", BlsPriKey: "a151fb462571d0eb58e1d0ac1fca6dcecc2ce097cbaff30423fb53e4b150e762"}, - {Address: "0x17f68b4C9e1eeE6eD5bBa0326c50515c7816FF78", BlsPriKey: "843ee44e00259ff2df171edc9f55216100c7946cccd3e46d4d109a6a7ee90d5b"}, - {Address: "0x19373b0E0428cc0f3F25169Cd079d27856b9f6d6", BlsPriKey: "be2507d4b1d01c3fd1af277edbff2863fa4edf78040e83050f3ef463879d991c"}, - {Address: "0x1B77597d6664f1fB4894c735Ea80cf250866d265", BlsPriKey: "8299644a589e27f51371917ac08dca99eae455a5bb8a1d5a534a33623cb7ca3f"}, - {Address: "0x1Db6cf99e231e42CEB0389E7828b16Be9b6a385f", BlsPriKey: "3c8b0a47ac82d7fecec8fcbc3f9ce69605ec4b74d667d6a8ca0844168a0fe739"}, - {Address: "0x1F4B579f85E585039C56989DEB56377c529981Be", BlsPriKey: "ec3628e08bda9127f3a5a553438094e662d9306137a357b603d9ad55d11d9c31"}, - {Address: "0x1e9fCd9B1BDC53921d6a97D305f8a829Fd1299fE", BlsPriKey: "92a606d44bbcd5ef3d6ed9b33b546b09078c205a37043c0ee8e06ffafb5b6d72"}, - {Address: "0x1eEbE25D248BD31B9A166326F2DF4bA9874Bae2E", BlsPriKey: "4a709cb38e8867ea75f29a7f14ca22cd9e116306cad8b70f01cf7fb2da87de01"}, - {Address: "0x1ed0498dec7bEb1C06738Cb8DAA54DD03D689F99", BlsPriKey: "a2a90405a2a8c070ae951e7918f8dd1b85ebbb3463ea6fe510db80a8d10eae2d"}, - {Address: "0x1f6CafAb4e651bF17dCb09188496A3d55D1A7828", BlsPriKey: "721fd7d88a13d50652eafb8f469e724916921235a8a50cf43c1e2ffa4b51fb3c"}, - - // 40 - 49 - {Address: "0x1fF28Fe254B0c42E5de111BFFC70D6e661619F6F", BlsPriKey: "bec3262486fae949ce5f743fbd18cf8263a90f319faeb0e11b09c2f170bc6926"}, - {Address: "0x2195Ae95468B5128a89150139AA52b792a6418f5", BlsPriKey: "5297d23411e9ca53ec317b78d60e8311472715c9f2ae61a43c7b545db8d15c07"}, - {Address: "0x21d02A81c2286e02D1CCdA4D36D4DcD27182bBe9", BlsPriKey: "8ebdd01e7c894ff3b4fae5c4d4f7df0e80ee08b484c01788c9dab8fa5fd16f06"}, - {Address: "0x225268acc5e8Be5f1B69063EA6eaDFfE676Aaa6a", BlsPriKey: "6b0f74d270d4e337a95f46c4d39f1cf946bcc827ee9bedac8323437598caf63e"}, - {Address: "0x242CBC66F0bd429ED47bD0b5c8164026A7994c4A", BlsPriKey: "036e784d4011c1c633da43d7ef8fc6d43e717151d333d74af1d953af1c8d7a2c"}, - {Address: "0x2464c234faA87689B21058B52de677E726d15972", BlsPriKey: "78383d03589441c4d3729b76d21c34b59da25e32d4ca605bdc5d1b3b878cc448"}, - {Address: "0x247d239dEc14b34A3fD6635F14A10058e1b433Ab", BlsPriKey: "0155b109411fb272dc5abc9d9a53a01cc346b24c76d77d7ebf785464f805d843"}, - {Address: "0x25ba1a086a4038307d34e8c085278b291db485CF", BlsPriKey: "7f92cbe43a42e6aacbba4b6403d54a262239c686863d2275464aa4c04daac312"}, - {Address: "0x262401b4532963Ac25A742a9A7277d98E4E0ea63", BlsPriKey: "a5ad07baadb3e3af000cbdeae7e50ec53a9aca6d33158776a7cab38427011743"}, - {Address: "0x265CA0F26A8D899F0c25313164FBBb5344F973cf", BlsPriKey: "1e017f62210957e1d528224ac0d0fb73e47d17f90b0204ad377f396e44173971"}, - - // 50 - 59 - {Address: "0x26Bb09E04a264AdB89B73389CBdcb48819CB2401", BlsPriKey: "f3889e2c2f2fab05a1135c3a2bd7a74b127458616e067a18ece0d8e8d002971a"}, - {Address: "0x26a2F4BfbED55F9760E426cc0eeC91AE0Fe661e1", BlsPriKey: "cc8b2c27531215a9388415cde2380437b383bf9a059a27a90f31e9f571f3c83d"}, - {Address: "0x27E556aA773505Fb57F07Aa32c1697D5FEc60C30", BlsPriKey: "43b19105bb960c5c872ba3892b2eafa2730e5eb5fcf05c249bef561eb7e2543c"}, - {Address: "0x28347C4F7f56898D30e0e4e2b96d3be8C25Eb5E0", BlsPriKey: "f1c039b7795e5cd1068966e314e76ccd7515e9098bf4436dab7ec5b26206f903"}, - {Address: "0x2861caed9c29f8b9800394fD2AC47e1bAD1B68b7", BlsPriKey: "be60daa759d8cc98ab812515720dd0a47432fa8f7386200acff9fe43e1481823"}, - {Address: "0x28909d8Ac0bf925aA6f41f2cde4A4cD9f31B197a", BlsPriKey: "80e38bcd003a9a12990fa2d23766b299bcaa4a7cc5d108a71b71e139646fd731"}, - {Address: "0x299A24672cB79C61fE045e0aF9eBba4ce0A135ce", BlsPriKey: "775f4d0f3ebd22efa3f69b0a495d4e3b87e963b9165620e001dc00935f45dd21"}, - {Address: "0x29fb0115A02F8F85d6fE0768f12e0F14Bcc9fB36", BlsPriKey: "5cc64dc633db8a761d8b0bac72392445f2536d22fdf2078b688e4e0f11b6fc36"}, - {Address: "0x2C2cBe9D862bf836ad96eB5074225d1a6f52ecD0", BlsPriKey: "cdd7a320620892dbe640c50f79e7f4f7e88ec7d404b77ddb414dba79ec522c38"}, - {Address: "0x2DBaa0deCbaF557f8681bbDC23D6383FbC359B42", BlsPriKey: "ecad42e8558019d8cdcc5c268dae43ea73f096ae6a07b6f0f91fbe30e4547e08"}, - - // 60 - 69 - {Address: "0x2E258FeeC9Fad9d243B946FDB490c19434E78a26", BlsPriKey: "c79d77feafe263ed104c8a3dd3a78f4c24cb15f23bf378d78536b0fed2f81d11"}, - {Address: "0x2EA2a868EcD440C13da3e23ceD0b6654fF34dB89", BlsPriKey: "1542777b7786dbd7f7b3e183c6fd9c46c229149ebdd1cd92e770eb9e87ff2a08"}, - {Address: "0x2F1a7882EF1c8634f46cb156DAE2bC2A35157Faa", BlsPriKey: "c3fbf51eeb25eeb0b04f4f2c8f33bb345065da277671a1a512107ccd3615af6e"}, - {Address: "0x2a58E5ca4C6525d4F28Bf0A3AD34d8c1B6a99c09", BlsPriKey: "2410ba0deb3c06e2e5747d1ca39c1081b0dbe205a885f3e8278afd2a8641623a"}, - {Address: "0x2b8C69Ba116ADaC2e2C40B5e8E6B05e39aE0Db50", BlsPriKey: "b80f5810a82b44678231abea9d0a7bd73839af5a6ebc17659b55e779d0bc3861"}, - {Address: "0x2c2a172192a84aF1d37F8793c596b9b91b517ede", BlsPriKey: "0b1a993328a0a418ad16cc9573e365b674fcf0aed41f22050f4eb0a3f67fa90a"}, - {Address: "0x2e9e70D46290A33F3F01251587AB09C84FCE7cb7", BlsPriKey: "e39fecadc883112bfdeddffbb9fbf4a611525951f0b3da348b8ce564a127c66d"}, - {Address: "0x2eE12a8225e5e811e11264D123c4E180F0797be7", BlsPriKey: "26ef3e9aa6318bedcc8e93eb7c3974334743defbb6bb003bc2a797028de71e0b"}, - {Address: "0x3076E2D79053c964966204Fd1A0aF770ef2538D8", BlsPriKey: "06a94be38e03945e068741277da7b58c61a9d2a58df5f6076852dacef3b76207"}, - {Address: "0x31335ed908287cdF7f9416cF748d145eE7913B34", BlsPriKey: "a580c831c2bcdca3306eb66d5cd20426f11d32bd1ce623b5236f3aa57c53b56b"}, - - // 70 - 79 - {Address: "0x319201A71220F5Da76B716A398D2398b6ed6a534", BlsPriKey: "7e9dccc87fa4d54a918bcd2a78be0a9fdc48fa56010758c500e31d4b15f6d54e"}, - {Address: "0x32E8D97857240CeA72f543460dbd17E5C648D738", BlsPriKey: "360abec0172e46ccdf42bc14101ac9a08502d6eb6095f55d5a7f0e17c3191634"}, - {Address: "0x3309c38aC38b8Ab3B0917b75b4434c95879b60CB", BlsPriKey: "19e8982b559fcb011d5ea76d5f778fdff8dd5e9f41990faacdeabeb1c369d633"}, - {Address: "0x33F8248328601d0A13DE54f580b5fC1D92bf0a09", BlsPriKey: "a8ff62a867711ea4de0785b5a2cc2759b35d6866883a963f2d5cb7cde1240f4a"}, - {Address: "0x340Eb83bAA2B555A97E8E705aa857D13CAe0C574", BlsPriKey: "e60669bf7362a0f9f0078479b50e387a7d8f29a9329f3b7cbd31636156fc4350"}, - {Address: "0x34788e58AB673D69b523c8CE62341a49d7AB0dd4", BlsPriKey: "a9d25aff30f4fe30af2cba36af64cb05983203fbfa0c1bbb9af175524a03a75f"}, - {Address: "0x347be45F656bB0240f54A78210623A7fc64C347E", BlsPriKey: "b2529f4bf082b5961e8f92e5e8ea5d601985e780beff1d80bfb646367b294b2b"}, - {Address: "0x34dad558F746FB3ac3cE2f52D78A4299EE8B5cc1", BlsPriKey: "7d5c691e785de7a39cb66112cf08c7328d108d485d459ad18e6a03722e85cf05"}, - {Address: "0x358f5cAd732462f4336c2fd1d1C2D2ef8a993a48", BlsPriKey: "95389b135940d578bc22673f965435ad511eeaddbc83ce0756c46137e1ea5632"}, - {Address: "0x360C6d41Bbb26C2008365871dB41F7f4F038aed5", BlsPriKey: "b8da8b8201f1b7aec7471a9cbf2df123a37acd145d1f40df4ee1eb1ee3c6002b"}, - - // 80 - 89 - {Address: "0x363A67Ed8D83b74f132364c07D95058cfBba4068", BlsPriKey: "89baaea9eea71b06259156fa7da7539331539c42c1bd0aa8cc22144dbbb94e3a"}, - {Address: "0x3712a9599454A3510C4Bf0927DB91333D7fe72bf", BlsPriKey: "171de1881cdb39926ecde2b6b0bbc652656904be1186963b8c0618aec5e8aa06"}, - {Address: "0x374beF68Fb58142Ca63b3Ed86C3132E008eC9957", BlsPriKey: "3a4cc149c8b757dfceb0fbef00b616843ad68d5b24ff59f95ff4cf2c959e8037"}, - {Address: "0x37731F1Ec1826b278CA47EF87a4177cc5931Db67", BlsPriKey: "62ded039ad53de22a275e2da572064b160c105c111e47d677dd8bfd42c6d9b3a"}, - {Address: "0x377dc894E403D4e099851038c4Aa40D67fdd64Ca", BlsPriKey: "fdf1a21336b30807e0e52ed2862cd398e7f131332557f7d22b37724f6f700b63"}, - {Address: "0x379c7e2c06932A064D25dd2B938974a31AFFAe4D", BlsPriKey: "e8dae2866983d99869b4765a6b2e9a8f9d2476885917f46fd70469ccb803af07"}, - {Address: "0x39248D6c63c76BC3C8dD4f8C910C9cb1098A0019", BlsPriKey: "98f4db326c0b619651a9130880fc7bccee293901cbb8fc7637df98090b0aaf68"}, - {Address: "0x39d1F7820013fE09056b2187359Ad03891C7DB78", BlsPriKey: "32dd83bb20b27c66182035d4cce1bae1902ca145d47ab24128441b0288f6c605"}, - {Address: "0x3D053cDBf1B9A8D5AeDDB2F5fA1E414E2E1b3996", BlsPriKey: "d58e62628ca9952698791ec711a1a30e25f5ea4a6c3a5285de441807892a2914"}, - {Address: "0x3FebCCaB09ECe4ef6f6a2bEA73A898B324976E74", BlsPriKey: "ce78925f42db2550e6cbd9d802ba842a296f04fcad53a7f5f2ba0966e0ae532f"}, - - // 90 - 99 - {Address: "0x3c8FC1035Dcb6e6106C15a901C4775035b3dA784", BlsPriKey: "16a56d0c45353f64c387c6357b9c84bec598cc07fb8e3f315734db8bb1de234e"}, - {Address: "0x3d1f908D73dDd221E06Ed234B65C482CA45a4DF0", BlsPriKey: "3773287ac6e5d8d9d137f00f4a1809341d35c25839e0d1769d1f5912c332612d"}, - {Address: "0x3d693307B4Fb93A8f18eB7407Ba667fAA3071acC", BlsPriKey: "8695759a8cb61c6fa17663032412c26f8c9445aee9f374fe1b9713117ade7865"}, - {Address: "0x3dEd77a2008C1a37A4A8dBa95A3f271fA9FE612A", BlsPriKey: "2933d5643378ef0ba8aee94f976ae76cc08cf182738888ee1c489f4fdc8e5a04"}, - {Address: "0x4028C0fEE197D2e0d2Cd2C69860498a712cbB8E2", BlsPriKey: "34e47d12f438ba91e41666c8e4aa227817c79d17060a740f8224847b9948a34a"}, - {Address: "0x41D5410D1ac8Ed178c2494BEdD696E759052A428", BlsPriKey: "fbd218940c6d62926c488bb4a6e389ac735b3386b7fb4c0c36e5672abfeadb73"}, - {Address: "0x41EbA30f94338B69F7dCdCC51C2e5557fe8Fb2e8", BlsPriKey: "d552aa321337894cb21dd0a4679f08c9dc2c28ae8968bd75d8f7e6f097baf85b"}, - {Address: "0x4204324E99c2D24DEFb4Ec92c04F91f9Ab1a4b3D", BlsPriKey: "2b76e3c16a2e5ac28059a97bdc0038be74b7e31d62cd750e167ff8dbf4910625"}, - {Address: "0x421F5E2b63530911aeB2e0C047E970f92cA5BFFe", BlsPriKey: "aa701b6ff07c196c5f95ddef8c49f578365822a240b78f1b5901c355d1dd3e6e"}, - {Address: "0x4229a06ca14dECaCc667ea3752Ec9F6cf6883E5D", BlsPriKey: "4ff55d2607bbab7f0b7c7b926b41a64a704b287ee87d2eee0138eb576b53e95e"}, - - // 100 - 109 - {Address: "0x4325bC92bA7e8D83dFCD3748998835deA565a619", BlsPriKey: "485799c51877d6545748afd681abc097dd6ffbfdefa5ca69e284127acfc8953d"}, - {Address: "0x44456966A18d5aD69b6E7a088289751a49bf40AB", BlsPriKey: "2111f88712ce8ea23e724a09cc394968cfaf8c2416cf93cd1a638bae2c2c070d"}, - {Address: "0x446B633889513A21a1d27063ADcd1B062c277D76", BlsPriKey: "370b986079a75fdef94d5a95e12cc2773af467b47b50febbd4ed0b070ff84b58"}, - {Address: "0x4478E05FdBB69b90fd5D2da08182e62356FdF7D4", BlsPriKey: "504ad61535bdba92590da64d4e7ab6ae78df225547926e407070c1b2277bb036"}, - {Address: "0x4499471831Bb521c02ccbf144882ED910D0BfF12", BlsPriKey: "ef95ea3be04cea4f6e34a253df5fd3e5978cc24e22c25686ddd2fa3e0c4e625e"}, - {Address: "0x44D7732cE7f12Df848E0B21d111f74a618f8a43e", BlsPriKey: "d7ff7def8e785136aedd7950542b87eeabf2a5307b5489159c86a9704a78c82f"}, - {Address: "0x453aa59A3227bf616a95b1E373A02b6a52Fb375b", BlsPriKey: "51a98d91590f1aa48302972e2a443330fd58c42f3afef8c0a1d108bd12de9b34"}, - {Address: "0x45FdDE03B486e2c0C4bBb89F398241A3755D5D11", BlsPriKey: "02f6ba3f90b9133fdd42dead23fc4623dd401717a1f105f94717ed9fc5215f5c"}, - {Address: "0x45aee6EFF98397835640638bA345E0EB31827AD0", BlsPriKey: "9655f209face791015d54bcd1862481fef92e3d43878d6cdd6d5c2293ef79f44"}, - {Address: "0x46ccCF8882c4703350A9aD72cA0Ae08730d148b8", BlsPriKey: "15a9c70dead44df5fa6edd81ee0a5f1377cfde77a1f2c54d73cec8e9c7cb693c"}, - - // 110 - 119 - {Address: "0x4762F1BDcD9B3B4b14293ee97d29A68F328Ef4EC", BlsPriKey: "a044fcbd1b7a7b7bba6699457305494a5bba0567e97d95a69c85b294eaba646c"}, - {Address: "0x477c8504Eed8fa3914e53285150CE0A87c87C696", BlsPriKey: "507349bb3f44e9a20dd6555b8d7bc7f95c26b372641fce31502850005d7eb202"}, - {Address: "0x4851E31eB74c400d906d98da8aD8BAC2A9dB3328", BlsPriKey: "e0984f407e32fa7d060dbd7ea2b9baf8a494ab435f797f08f4892a2bf5b34a0f"}, - {Address: "0x49047Cd6Bb970E711a198DF1186aeb1E6E645EB5", BlsPriKey: "4cf7b3d6f3c516061e8e17b6290f4b8fe58e822d4077f9f5d718a5c3e8bab526"}, - {Address: "0x4B4f226886dD72d30B27197593bC6313d228e115", BlsPriKey: "1685239934f53fb3aa8585493b03525af5e1083927f59e86a649ae383d02191b"}, - {Address: "0x4B8C78E300D5d8DBc80Aadc03d2a899521fc4418", BlsPriKey: "941481e67ca7c764d2c077eaaa014b457ae247757f5d863b121e884701e10e30"}, - {Address: "0x4D30F9107a8dF1a89E040C693A7d63F65aA6D289", BlsPriKey: "169b52af471949aa81f53b43bbf4e9d84268f248a92c2eb7760437fb0e36e956"}, - {Address: "0x4D9EAF51339cC05a8D01f19B3D960b6A67db62BB", BlsPriKey: "2e4eccd13f0d703e02cbde24e6b347a565ad4ac3f9ac7a9a293e1560687c0d45"}, - {Address: "0x4Da55B8bf9c484155ff90F18CD858B9b4Ba9F456", BlsPriKey: "ad973f8c1436d1a9f603f24e551e84609f55ab89391ee74fcf564707ee8ec33e"}, - {Address: "0x4F39740C7479d45E9D89bAf57A0773FdC03b5773", BlsPriKey: "7ae27163e7d27eaac107fdbc509fef756130eb559ba60528d23986f97d824630"}, - - // 120 - 129 - {Address: "0x4af845890077f56e154A1D725CF76A707a4C325a", BlsPriKey: "1834fa58057fa8dd15403876d95b9e28436513751ffa4851917bc14ef168d158"}, - {Address: "0x4ff4cA3C6725e57fEEb23c5B8a05e71bdFfd7c67", BlsPriKey: "389e563834fb16d6db37774eccd4eb9a1ac744271dc0ddfac49f17919fee763c"}, - {Address: "0x503C240fC52b4556Fd990beBC2ee07f17a1D9fb6", BlsPriKey: "4c7457c1fa08df5bbb1a0cf3025579b1f77c641a4f791fb63dd6e606275f7355"}, - {Address: "0x5042aa9eBb9701942391f975A57B5DAcbB8b3678", BlsPriKey: "0dc74058a27dd6a931db1bb1ac69d9f788905cb671dbfb7846a992ff82fd5841"}, - {Address: "0x509E55f51e887A42A38a2C43A373B84779d9C408", BlsPriKey: "d4e0fe3c557ce18db485d8a404e32bcfe0a762e0c3712c80a932ab8012545e21"}, - {Address: "0x50eB59e5D69F0151d45aF7De42eb06A566D00922", BlsPriKey: "b1c66b01bbf41faa688e998903df494fe2db0bca5e00fb64f97ecf8b48da7e35"}, - {Address: "0x513B35302F1DC54A194E58a5e5D1F4fF73b1240D", BlsPriKey: "b54ed87e8e6044ba683fc4c19ce1c05af7d49fdab2e9990b1f1d0827adc69519"}, - {Address: "0x51Cef58fb50f46baddC6c9b712c1B0dBA2835296", BlsPriKey: "15dce77a2bfb9ad3122318e123c4fc4b3bac83744b742bbf8882c7c2d77d0770"}, - {Address: "0x51f82DFC182b1c08a11bDC159EDE6e8219Ff8D7d", BlsPriKey: "d33767dd3802b9754b8044caa067ae88d1742d519fdf91ffbf68a1378f41a369"}, - {Address: "0x5325ADa44428d5b2Dedf7aE41E5Abe129B8433BA", BlsPriKey: "3145a3ca648dae41009201cd367c5e107ac2518c7edcd431812362ad30c82e21"}, - - // 130 - 139 - {Address: "0x53e8B34C45193abf3eb290973eAB78f9f0af64dC", BlsPriKey: "95edcf0e651283bf480850545f7faa1cf0adf3deabff3a5b9918630f6e60823d"}, - {Address: "0x54030397F9EEe4e9294c5E6E161510109C3727d9", BlsPriKey: "9ad3d658e6252aa3b5d44edfc9fae6d8e03ac69f5a2ea1355e17e012201be533"}, - {Address: "0x545F361048B1EEA955Af00Bd86618F91FFA04CeD", BlsPriKey: "34ad1e8521283bff6f9e0360bf3f9f625779351fd68b9a2c4cf80eeb67739517"}, - {Address: "0x557dD1c2C39e8Ebd7d46af5dDf8e3F450108C44A", BlsPriKey: "5cfce0c36c23eb91d4d955d823f35e913e18704fc5851022269e28192957b125"}, - {Address: "0x5672f21553783d16AE7A7901A4461adBf6C09c56", BlsPriKey: "ed62774abedc682a04d166fece7cc22c87bfd68615fd45bdd66aa14e598bd41d"}, - {Address: "0x596907B8b2E11e2EBC6f6c8011Ad379e1b83F669", BlsPriKey: "13f8426d081c3c8f988bb57c302d1f3cb6bd14cb2260516ba65b84adbd027327"}, - {Address: "0x5A9B1A7b7c889C359e8D52c08e1566C10Fa8B5a9", BlsPriKey: "e99d589dc065f51402683dd8c4abd40fbd7d15bc5e3732c77bd6723901d2204a"}, - {Address: "0x5B266C47A82c4a849a70a1F96760fC1025784E7D", BlsPriKey: "4d617b6f8c01e714cf98fbec540de10eaf4acf99f55ad7a784bea63fe2f8af4f"}, - {Address: "0x5Cb5E2Bb095d2DD25C9b2887851f8D9E7b733e75", BlsPriKey: "f2d82f2f202aded3aac05660621f76c038afb1b561e27103fc9965ece6b01f58"}, - {Address: "0x5Cc69576F059260426e29bDccaf22711ee9F2730", BlsPriKey: "1451fd7e7af3e367b1965851a3fac8ecc269297b97b651eeda64eaa2a1f26726"}, - - // 140 - 149 - {Address: "0x5F8a55259e904D8bECa6b19C728Bc933c6ab692C", BlsPriKey: "9440c692b92dbc511f910e49897d3f94c523c2579acca2ef4239c68c01c36420"}, - {Address: "0x5aE8A1e341D5aBF60F639E6ed878f234Ccdf03D9", BlsPriKey: "210f1827ebf42d2b691827c6fbf2bee5b1781f29543870f55e5a8d306332f837"}, - {Address: "0x5b28EFBa128480AEF7c07536Cd5719eF32346ec3", BlsPriKey: "d3b765460eb90acedb4c091cad218f386276d4082fa86454be97e63de6b24530"}, - {Address: "0x5b780aA2EB82a7D3a2643360e69060ea12aE8d40", BlsPriKey: "eb476961cd8d7c883db6ddb23f7f6c2871d05d36c48d2115da9c7dd051948106"}, - {Address: "0x5d64C1e6389f4D15fA1cc02e43F8Cd2AeCE89DD7", BlsPriKey: "b3fd13f17e12868b2a2f92fccd5979b63e167df0776899c74bfb0411878e4c44"}, - {Address: "0x5fbB8cF80Fb9C582Cf77d8a307378Edaf3855fD5", BlsPriKey: "994111f63f0afa38877fb19f8ab203b5348fa3268e4687e73973b07000627920"}, - {Address: "0x617AA0d05af99A91D7263D92F35e32909322E5EE", BlsPriKey: "b54adb8d48a0b167ca70bd935519abcfaebc1e6b51393f073c6477c0f7929a2c"}, - {Address: "0x621bdbD1089b4297D857aA1289EeF311baF3f2B7", BlsPriKey: "c157e1d888cb12b51b1419b0d7bf5e0e97ffa9f6ffb77b191a884b5683d1e148"}, - {Address: "0x631eF9cA4Cd625e0610e9808674284028Ad30662", BlsPriKey: "4773adb16b85053be1ab8eccd32576538f64f5cbf13bf9d0bc9f4ce36e841a35"}, - {Address: "0x65324a6539e78e476AA1e08396bcA1a141C93938", BlsPriKey: "94da2fd1612b945f7ce01955085d6f7038bb0de0353aec1cba21e4cc62240936"}, - - // 150 - 159 - {Address: "0x6574854fEB55F3c04D24d34EB9AB6fda880EBA77", BlsPriKey: "fc2e56018889f4cb13112af31a60b5d1f04a1699a7200b3b6e8048bcd047aa56"}, - {Address: "0x6746713E1E01F22809453a9A74669eC3f9B888fe", BlsPriKey: "68470f60e743a11e6bf6f6126376d3d649ae3285ec5078c64f3caeb45284633d"}, - {Address: "0x695F372E04A79CCed0857cCB0364CC229b944C8C", BlsPriKey: "45d56d646bd37a955704e085b5e5b8346822a49486212d9499709eac8cff1b20"}, - {Address: "0x69Ccd21Fe984E812Eb22023beA809E93707C940f", BlsPriKey: "7173aef583a4a18a96b69f5b875b6079493e591790df15deffb499bb8b902b3a"}, - {Address: "0x6BBa4A8e29dD2C491b493dB83F648ec822B2a73d", BlsPriKey: "d0a56572b6e5780470dc20cff364502d84c26d5414d267e9d8eb6b82d8ac6436"}, - {Address: "0x6D24Ac5F7702c552dE9F2d72d4e0F6F01f786f5f", BlsPriKey: "13317e3d7d40d51370a516e171afbe0bafe6e646a748d6ac6f799f61f2c16b42"}, - {Address: "0x6E1401fe11502f367C5f789a8379e33Db3a934F8", BlsPriKey: "78c2e039f14a60fe400a1be33362302463aca4094f2dbc6b10181a3e507bc55e"}, - {Address: "0x6EeB2b78CF742745ddf3Ddc88C3519665ed1b4Ef", BlsPriKey: "648627a389be8a784f9fcda2b4991cd88e08428d77a49a67368dcf0e9bf6da65"}, - {Address: "0x6F3E52d859Cc49c095ea1336D55098670a3a6b3E", BlsPriKey: "f08e2d684d763a9391d7b24c84d15d213fc1b85091aa707728c80ccd8baeb155"}, - {Address: "0x6FcEA1b902493E2dd94D9EA490700E6B81b098c1", BlsPriKey: "d7174a56999e52219787382395dbbd44151299fe79987b26e1cacfb9eb674710"}, - - // 160 - 169 - {Address: "0x6bC118200f6D273950F957aA2156157cF751E681", BlsPriKey: "17418cfb5a52994e3cdd2b47eadf3b16c941dd8459e2441bbd0c206f04567617"}, - {Address: "0x6d3Fb5f10ae1347b5225BA61dabFb2F7A5F96D0D", BlsPriKey: "f9a1311d8a8a14a7992a69137e02a5e6279e5d8ef62a50c71ec4e527e5a4a672"}, - {Address: "0x6e923376145EE43671B1F5f6B259eE08EF330Ec5", BlsPriKey: "e48af4aa31adcfdeb815efe9589a101bef8e7328427652854cd1fcda3d74f926"}, - {Address: "0x6f0832Ecd5361288Ed0E0897191AeB80fef3E918", BlsPriKey: "6b41103234f515f1889308a6f0404757bfea3b9fff74a2c7157cd37ef199ee3b"}, - {Address: "0x6fE418ed174CBbc500DB471ee49179e9A8DF248F", BlsPriKey: "d2d75e87b164e79baf820fe5ca043a395de41792d3a31556792f3268876d2270"}, - {Address: "0x70302fa02bC4b603be3F475531163f8bC83EA7D2", BlsPriKey: "466820150b55cd7c90e76ec8d0b2bf860177dfb3cb451cf42669b6ced2aeaa45"}, - {Address: "0x7057dFC56072BCd80150fE810b2c5AA4Af96c549", BlsPriKey: "87ed77b27a7b356a360b9e85138613c878273eb02664be13c1c4c39b72fef752"}, - {Address: "0x7087194e46d6766635261ECfc8ecb8aee43b8cA1", BlsPriKey: "6705f38afa72e22e60f88a894e58b46b5442b949af0197b29c09523420880410"}, - {Address: "0x708d570a7b0E974cc3D4A4bf363674454c90c84B", BlsPriKey: "a24651aee88ae6ab40e9bca429d774058ff7ad2c294a5d4bfae1e097dc3f1171"}, - {Address: "0x7200724064D7a2db5AF9260E6A14F14fFE9eCC9F", BlsPriKey: "85242d0d5833ca94d17c5a90b9ff65a2e2fffff03d31180e7ef86fe81ffd002a"}, - - // 170 - 179 - {Address: "0x7234E8dFF697f93cC5945b31953303bDB997418e", BlsPriKey: "6ec5aba7a62ed3aa6d8465cf1ed4c8d50295464f661aa7e90618df215f38582d"}, - {Address: "0x73BD0193121a53bbDC768eBa6AF393Ae86483b31", BlsPriKey: "b573b86f453945ff4ac93e78080ce9a6db46775b4843b2be9c08b76465f2f11b"}, - {Address: "0x74798b01776702994aA567E4cfdA313057360744", BlsPriKey: "82fd8ae28eda22f2b38a29303c6aa4fb6b1c40d47a434422351bf4f1343df323"}, - {Address: "0x74B368c634AC7c4a78D35AdaD4D631d31697bfF7", BlsPriKey: "63f9b91b632c938f5a8d5d7081bb4784b4107a7c190d5f6404017d9dcd078936"}, - {Address: "0x75d7ae6361ebB756201e044aFf34c91AB6b8771e", BlsPriKey: "02fff33c0a613ab804ba7e2d6cfc64272f1db6491d60f122d4383f0a285f0127"}, - {Address: "0x7612Fda7865d441BCE510509f4ce29191C112B86", BlsPriKey: "979777b2645e0a9d27f9df4342b3d47297bfad289d846320d927ae07c7f0cb23"}, - {Address: "0x766B51338c6C4F7De2d4f15357bdbA4B877C0835", BlsPriKey: "940a8d926af02e8d420b5db62c77232f59c035f7f39d4166135af5f2c24c2608"}, - {Address: "0x76e2A98706F1d4d01e2FF1FE6D8e4609A0622Fb4", BlsPriKey: "be5e882e012ee26dfd026d1fe68bcae4561f493136e46972e869f253b7a8e335"}, - {Address: "0x770b8e3A35Bff512F173cE152BD1220d82bB9de0", BlsPriKey: "ae8e83c2dda35683bcb52ddba3aca7efae0bc5719d6aef296c47ba6107f02e3b"}, - {Address: "0x77229fA6198791D333F286fa8360946042c65337", BlsPriKey: "dce6b6551dd63046fef127d18204dcabd9c0a2efff5024cae86f0d5e954e381c"}, - - // 180 - 189 - {Address: "0x78404079f5081A5Dc38902b47257c0D1D4e2E028", BlsPriKey: "cdf0bc45533e55377572b1393eabe3eb270b6b495e9f64741d7271a10a7ffc47"}, - {Address: "0x79BE4EF66f3cc7B5b379F85353873115aeDbD242", BlsPriKey: "1d91ae936dfd994ae3d733cf660d83c220951f02c49f2966596432a110c67b4f"}, - {Address: "0x7Dc053eAc8613229a6c316Fc436f100477571EE2", BlsPriKey: "1af64c8a54ef654f423654b21fcf6c93608d744bfbfb066878fccca3c3260408"}, - {Address: "0x7F58C0cD5c255020Ec94425873F666F1D68FBaA6", BlsPriKey: "4057a43ebe920b4e77edf917cbda115aefe8879c818a14b850238d17e3d57963"}, - {Address: "0x7F686454f91A68cC3248a642F59aDb2970e84D8e", BlsPriKey: "4e377543f022c94e5add8379b7a6483ae57182ec33aa594ec92e03cef6900b3d"}, - {Address: "0x7FB5fF6e7aE8279F21B843Bc297b24bFbC45733E", BlsPriKey: "a9fae4d7179af52e732f34acecebb3a57d4c19dcca587200115fa1c46203d716"}, - {Address: "0x7a22ff5B8483CE859757Bc0Ef7Ec64d11421B680", BlsPriKey: "3cf1a581ba45cf4a54f45f50e170e777c6d89a49d3886c4306b6201188bc8345"}, - {Address: "0x7bBf40bD603B2434A964CdF979020B1E0E68E13D", BlsPriKey: "6498dcb3ebbdf3a76676aa1a20aec00137ec82341690f95d71892d3527320e01"}, - {Address: "0x7c14C7f6dE1f39579F7ab8DE24c168737E3FF53f", BlsPriKey: "e15aed53ed7c7044da20e89f84275ef59d9b52af17a45da13fd935380ddfc96c"}, - {Address: "0x7cc507b9345a58B5232e16B49b02F365bEB7d91e", BlsPriKey: "041b40b44e3da920e90db1018e587bbdba76b059a9ba6f1b077bb1a7690a8a42"}, - - // 190 - 199 - {Address: "0x7fC313531F4355CA2C0439f39b3Af2D419A93897", BlsPriKey: "f826915c1c14c7537e88716de6acf9b28740ed91f40d276d3f0eb8d94ea99b65"}, - {Address: "0x8044Dc039C1AF68a580210379B8562A46938c449", BlsPriKey: "83e0d32d607ef145129133fa125e82f34c94138b5d79a744a9332ff7abe5696d"}, - {Address: "0x804a1CE2387874E311e966c63A02C67dB15f2A87", BlsPriKey: "4203a4b0f485f943d35b5c9312eea79cbc29afda41abcf7faee02c3beb4f0b35"}, - {Address: "0x8080ca14e1b3466b3b13441cDfd0f413E0BEb67a", BlsPriKey: "bb0832c2e4051e5b75acbee816680c777b453f41569d8b62ed447e2846c69918"}, - {Address: "0x80FBE7a01D593aC28CA1fE12E9CE62d6E2a08e5C", BlsPriKey: "8a1afe54881195db769e19aff8ac8620f565bf536332a452ad21e6865c6bf86e"}, - {Address: "0x81237F5d14F5db4d6370D353e3F5952e7aaae0cd", BlsPriKey: "d03a76a9aaeaf099f166717a5c42f96776294971ae75cf62d3c33fd1c61d215b"}, - {Address: "0x822D6E108e434A3C2B27E0890C5DC3936D009560", BlsPriKey: "b8a4f97f396bd209d4fee1a30b1ffee79d9c83739e9bdf3227bc08030fb3231f"}, - {Address: "0x82375BA85Dc7F301f6609a39E2C3FFccB1433d5e", BlsPriKey: "1070ded9f817d8b50f18b736ba3d6c4e7e20d65e2156195946779972bbee9536"}, - {Address: "0x8244c534557d3d40caD3771EdeA45d394bbc3f60", BlsPriKey: "adf4021802fab7756e9e17cc3232ac55489e82de3a435c0c5f04f30c49c2d92b"}, - {Address: "0x8265cb4Bab2c82390776e17ACCfa0D5EaA785e05", BlsPriKey: "f0060b110bf83cd581662e3e8bf416619ea4342e6c9a7020be7fa38e5d23f925"}, - - // 200 - 209 - {Address: "0x843836cd5F7FA674a8394bA7029E5FB6C1Ac445d", BlsPriKey: "6ecf1c1fc0c633d02183fe0e4f3c14413c0c411690538564931ef9c2bd19cd3e"}, - {Address: "0x8472C1E3482439e8ab74707A37AfBc1450744487", BlsPriKey: "458d298a9c1b9e4caacde66da69fb7142f08b1fc8a520b32e5bdb84415b4db22"}, - {Address: "0x8523F06c816275Bf969935d81c3F8a567BF5C4ee", BlsPriKey: "c40522909275638c55cfdf6881ddc725bc2cd3c866659f34efb2e9061a701634"}, - {Address: "0x8596ddC36ab3AdF720519D872446D93E3dD56b9B", BlsPriKey: "6f97fc6608b231ab51718289350fe50e4832ee3250eb7e9a53d327d7c54f2705"}, - {Address: "0x85E1bADF991A19013282C956f1a64CD468832465", BlsPriKey: "93a878a165b5917648a832bd67332259ecc4cc6d48286b2341a8182b680a981f"}, - {Address: "0x8A61A375d192c324348a590387fF9385137e3516", BlsPriKey: "8d0121ecfdbf14ac2e61d69010d1789d073d78da75d0fc8c345351aada89320a"}, - {Address: "0x8A74D5F8Cdb657DA50BA3670876b0928F2639375", BlsPriKey: "42468dfd0b42f7fdd2c37d44683528b5ad2f007bcaa13643f4d5af32ac49fb4d"}, - {Address: "0x8Ab219d5F9FFEB2E05631852be69F9Ee16192b53", BlsPriKey: "a12547fc0358dab7ad43e94a8a95aed2efe26df3c139ad7281511d25dd4c091c"}, - {Address: "0x8AdcE99aABDc8e149807A4ee3Df76a85D726C76A", BlsPriKey: "288cd70f39f3f0f17b1e69323080096ac8dc4b77e168217a684480ce85c50307"}, - {Address: "0x8B98C8f1aCf11b58f30aaac600b8E72102E9393C", BlsPriKey: "bb7888370ae6a76bd8b31ae0dd214a7a03a571a63269aa83bfca362007e24f61"}, - - // 210 - 219 - {Address: "0x8C0090401130aAAdab6D1bF68E42d66cbbd05492", BlsPriKey: "0131f23a6fbf21bffaef33bca666b7168ad0592366c1bb56f41ec250c191bd69"}, - {Address: "0x8CcFA7D08aa57BfBaDf3F9c2398618FeBC6242C9", BlsPriKey: "6f8f97dfa9ff60b86c87db5790f6f5a461387d672573e9c3c3d1aab987064570"}, - {Address: "0x8Cd0FdaAeAB633dE1156167c4cFFAFBfd1115262", BlsPriKey: "9aa7a8b03925514edd349511341225d2be3d21c4fb982ff2055ace9d8ef6cb15"}, - {Address: "0x8D83762E8aaE86c89C7BAa5a7d9Fb3eCB0520c11", BlsPriKey: "4b46ffe08f03918aade956d3172e6cfcbfb7a091e72adce028daf83e4dbd1a3c"}, - {Address: "0x8E6727f22F99a544DE88829547be11bFD15d2e74", BlsPriKey: "cc467316a160bf7f32b49e75c03556c7c534bf6d7568ce2d21e7f99020c12e35"}, - {Address: "0x8F70bae25fFB3b4769ba03f7F25D41011299ce2F", BlsPriKey: "6569207f4e9649ef70f252f9893f9ef88352ece774e387dcae55f4d676a5d112"}, - {Address: "0x8b870d5E5D1c7F8A883d033f2B191B9A753b7505", BlsPriKey: "09c58267d1c39aa48f19b51e9370b676bfff9570b1c1b649549f996b8fd4be38"}, - {Address: "0x8f16F6397D1FE318c2C99f7393Cd0AF18c6e9400", BlsPriKey: "4429974752c0da574b7b58653a781d3d94e27a25f07e363245d651b39ab5a94f"}, - {Address: "0x8f1ACE0ae44D9fdCF5E6f5499fA8622e8EcD782D", BlsPriKey: "30d5665a55ae4279d657d27d517739a7855a6ed313c29986f3cbbc7580db871c"}, - {Address: "0x91136E3d84a594A375A40dAb2BF0499aBE4af875", BlsPriKey: "c89a9767d149bb89c71997dc161ad34189e0527ec51a69a2108b5e457a200550"}, - - // 220 - 229 - {Address: "0x918c7E1f1CEdD25415439786A53c3C35030beE0B", BlsPriKey: "e4a87d8519a350c96e81a63bd55a825fc2c511d3e0e723b7af03600123d8db15"}, - {Address: "0x91bD0CC6c2016DA1B1AA798eE7fC30f6a3327d15", BlsPriKey: "10ea1e6185177f7165bca70da9312c31cf5f2f736043185f0bcee5b0aeeb2c54"}, - {Address: "0x929Fe1f0Bb4E21704c2D63c12fd563553c77E912", BlsPriKey: "dbd9899991ed3cfdc6dde112c0578fe0a4d1987b594140ed236d77608ccb9873"}, - {Address: "0x92d4dBCb8809De9980aB8F95C573DCc1041a346a", BlsPriKey: "a41fd599bbff81fbaa3aa6d0ea1ced98fb57fa3ff505d89fc812a9ec33441136"}, - {Address: "0x9423bD42443Ef279DC3b73f20E1c4223C398A12B", BlsPriKey: "84be0d4beefcce4d93af2ac3a013efe34bec43df7c0bde6ea0f3e2681c26dc2b"}, - {Address: "0x94257dE2c456265883152Ec7a425f054631bC39A", BlsPriKey: "ac5c5efadf235fdb0398e47a782d84763f85f9384bc3dd9b07c046d0ec85c733"}, - {Address: "0x945D919f1035F6D5fD480800500F8fC524eDda56", BlsPriKey: "7022992ce52c7e74219b2f4033beb47fa84cce4f0b7302127a40dc131f26fc0e"}, - {Address: "0x949C42889D7A48641D84E104E60A2ed56a1aCD7c", BlsPriKey: "125ff8af7b7445e4c0ca031e197dbcbd94721e24138a11ca50cd0aaad9cc340b"}, - {Address: "0x94cA2706dc707449E56cC72702a6D9C2a1aD2E5E", BlsPriKey: "5e20c22f2f1d5e3a8b81a5975a59f7eb69845655ab6223ef6972efd96af5275b"}, - {Address: "0x956545e1eA3C5Eb90E71E33941307A5498F0897F", BlsPriKey: "b0bab1d57ab9839272bbc43bd2076506ed8c646cc5e4ca186df990f04c844423"}, - - // 230 - 239 - {Address: "0x956c3d59b33e1B794Ec0Db0825E4bFcC0b68C7A2", BlsPriKey: "1348b13acf8c43af78485fd066618bbf43c60165357c7f8918f98dad6a1cb853"}, - {Address: "0x95D04aF9290982333d2A647Ff994E5ECDc9A6d5C", BlsPriKey: "8842213e1f3838928087567546c0a88e0a74ba114bdfcbb7badd530f4be7631f"}, - {Address: "0x95E0D358E5FdDF85f4266f1AF31C08D269A1Bd0C", BlsPriKey: "bc75b17d0c241b3f8a461e591dcd86f0dc39e9bb53e13d0938430cae105da066"}, - {Address: "0x9637B9690f424212eC563D27faDfb5405d87ECbc", BlsPriKey: "b4c4b1395b0c947dfd96dd93f8b85378df2c6c08b64fd4bf95eda9f23add9f3f"}, - {Address: "0x9699B184547c8A72E2720798cc844483829AE364", BlsPriKey: "e5e0954b126950bb3dc26406adde3182724949b0fe3f8f0c5c47d7cf00560339"}, - {Address: "0x96bEBCB6c547e24071360fE52c8DFD1EceAe1159", BlsPriKey: "d2bc924451707c627097a82ab750d0755e871cb316564ffd95fa883fe2465f20"}, - {Address: "0x9747CC556515c00E2966fC83A81659D6C3977Ff6", BlsPriKey: "c40eaec35a42d801a879786e4d7d42842da52799d5d6a28acbe44ef0897c8c6b"}, - {Address: "0x9862aDb98793D1a25Fe75EF315DFa1f3a2133652", BlsPriKey: "d7206827ff45ac69dde683de4eb6493eac17acb4aa855c216a8b212b8598ab1a"}, - {Address: "0x99F5bb9F80643569A4AA8AFfEB64FeB06bba29Cc", BlsPriKey: "4760740bca6328e00b7c4dade8305f46fc92b1b775ca25a416c4acb3e12e8737"}, - {Address: "0x99d2ef179790030eD3aEBDC0E471BBDcFA6eCc70", BlsPriKey: "666cc194602ad0a76cfaac150d23f78811c4f73c6666dee3d9ccc75465785b08"}, - - // 240 - 249 - {Address: "0x9B844e64A50a1495e1ff67587b9AB44d47129F90", BlsPriKey: "f0e59ea1b0650f4f4650ced8195b97926615090871e4af6b8858cbdaaca23765"}, - {Address: "0x9DCd46C76f46e0C813523b8E1f180A2D5F37831A", BlsPriKey: "fcd230958a8e189243c3f1a5315949f3e0e6776727786099c54c61469ea51e4c"}, - {Address: "0x9E715388FA18e42F05373396dc4333199BFD6309", BlsPriKey: "334c4b148a5e284eb654aeabbf1764a4edf20ca08d066c9a2df58e39194ac609"}, - {Address: "0x9F59275941150FC43215B66cf0Ff8e806CD13F85", BlsPriKey: "69cfd538f35a969c1d64483312a03fc93b5efb7e03f4c49f23c971aceb851834"}, - {Address: "0x9b353a54E0bd19EB7849252df0d48053b0B40fa1", BlsPriKey: "9c07eb4035c55abd529160c3ac54a7961b17a02014723b97989edfbcccc3bb44"}, - {Address: "0x9e6BEc699cF0BF5ba303C230711CF18172CC65f0", BlsPriKey: "b5da74e24502d5c6731d5a1b3aa49c1fc551d2193aa66a8f83add44ab02e8a51"}, - {Address: "0x9eBD19bcEB9e8503055d504de006B69eC724e6E7", BlsPriKey: "a5662f394a9f57511fe5e21b49286f75ce5f5735616a2a72341f87d4ced1fa71"}, - {Address: "0xA123a6AA1Ea595D1561a7D65d14b538fa3378fa9", BlsPriKey: "70572e4630b0826e96f77bfcdcf5e32dcb7a6e847977126cadd40fea2f66f220"}, - {Address: "0xA3F7ec53f39415aa1A1907F95FfAcDf46dFb9fa8", BlsPriKey: "32bdaeb1690fffe08cb800c6d36a03b11ceb7d0c0de3426f0f24330a5053b168"}, - {Address: "0xA40d92133594d20a13FFbD396853476373B85E61", BlsPriKey: "651ea5ba7d5f51b80b62c8f4f1a854d9032ce6de797962fba2957999c0d0d60d"}, - - // 250 - 259 - {Address: "0xA53a112afcE812F55A22EbdE2214FD1ef555B9Cc", BlsPriKey: "ebe4807162b2c7a2198c887cc789e73e0789b7c3805e6b67a961b74a90434b63"}, - {Address: "0xA57471E20BDe6a199a6967c113545b7031551eA3", BlsPriKey: "4b8c2963de75a99c2005a7925eb14a7d974f9d7ddea87032cc144fa40013252a"}, - {Address: "0xA652360e89E08CdE3A99be1b22C60077c96bf85e", BlsPriKey: "cf91e21e94f95991a254764ad758cc91d81ee5b33d93401d0094a2982300c25d"}, - {Address: "0xA8AF447E19ba3673263d1d9223138C726D4A69F2", BlsPriKey: "57414c7967d36a091d6802d272ce9e210243f75b5c6547188b211f5710457036"}, - {Address: "0xA9FF4Fe2b64BF6341d2016488CBedF0F660Cb35e", BlsPriKey: "5acb6075441be1bf656ce5519d58c455a0ffa7d7f66ee3040fb9179250bc733b"}, - {Address: "0xA9dd45caf7963Ec0Cf71067111AB74AFAd84B53C", BlsPriKey: "bb359f545fed79a73f4489d7fd09ec10161ba4ae6f678c51844f6176b20e6e10"}, - {Address: "0xAC8E1689872748d074B123dbd8D535fF82d4FD7F", BlsPriKey: "1e7687e85d8e0a35c0c19ca352e64e165b7cdd5b4988c9887dd271944bd2d035"}, - {Address: "0xAE71c8067bf12C0027fd5ADcda9fd006D5e02a21", BlsPriKey: "1c43673f0ad132a7acdf0bcaaca35ffd5e46d1daabd1adf9e542182e47089112"}, - {Address: "0xB32EC947bD777294924746Fb9A2f1d870c7D7b77", BlsPriKey: "14670346951dca5d6a2460b2fa7c7e9289aa08db22fd294f09a9436fb87b683b"}, - {Address: "0xB340E34F8f9C73E7F1321102912E5A1A888AeB8B", BlsPriKey: "19527897174b39d594eec02a395fd17badf45bdbfa29c516d4cc6795c4de391d"}, - - // 260 - 269 - {Address: "0xB37A17A8aaB2c51297f2207D9325450Aa9FCbB3d", BlsPriKey: "d110ca4e7234abcc7b04f65e0e81c4d0114cc00b604a5d1518cf91e3c9ca9538"}, - {Address: "0xB3B065fFB5F081170A1b3a7497711A4f0AA8405a", BlsPriKey: "d46a7ad5decae8b633a9547f1803c626bd4d21a72f8b96e06112c3a0d9860f4f"}, - {Address: "0xB48856c51a2beb57df0fdb9D53463F36bD42cded", BlsPriKey: "818f0affb25f0fa502d3075ddf55cc1dfc8576225b7b3908981e69d1511b9026"}, - {Address: "0xB5562E105957e2F9fCc4e0De836032FCc4Dd2689", BlsPriKey: "f1cf5a46c65a2d4540282936f10afc9d23fd9451f3985d48a28ab5c6b254be36"}, - {Address: "0xB6370063dC8d761B3655398129F55eAfc80F35FB", BlsPriKey: "5cb9981470e6ccc8663e33cd8bf992e9f387ebe2027652dd60a4af94fb140d01"}, - {Address: "0xB79D19d38bcd7385a133EEb882130fc904c8440e", BlsPriKey: "5296b7141619c3c66f97affcb07ac1a6695e17c27c61bad43a18b31ea59ad726"}, - {Address: "0xB91b5bfc5B127D2eD459AA630E89cf22fa2F97FB", BlsPriKey: "023eeb9332ddfcfc87be3d7eb940c2a83be61f9e7e58123bbd6f93fc33418763"}, - {Address: "0xB9E454ad521658387D8466211A2EfBa67D5b5E1c", BlsPriKey: "2d980ec857c508a84a5b316b7b71f8998dc8386d972cc147c0c37e559d3d7c0a"}, - {Address: "0xBA18CcF3De40887863Ec531Ba26601800118d895", BlsPriKey: "d91a7dcf94a36b8563ecea8cd12f4875b1f784f17da57e5a3a3e59677ef14d4c"}, - {Address: "0xBAD8736500D4A532C58AdBD0371C104fa2963742", BlsPriKey: "490a4c0e45445193bd5819378499ae80ff9b828b28233da3e10247864904842a"}, - - // 270 - 279 - {Address: "0xBCadE9E4936F8B04dDFf820357F1C2C069E34F1E", BlsPriKey: "201414017504d5b54f806a358226b2611274dc0dd95cfba1aa9739881884b814"}, - {Address: "0xBD63c16C80f5526c1EBA246A3465671584B2934a", BlsPriKey: "3f9255f7270fa2da4656df7b91e7bb5877457be1168a7dc145e13fc4eda9722d"}, - {Address: "0xBaf1a0819EfAF0979b86A06FD3082Ee039e260A0", BlsPriKey: "d895ffa711fac6056ae4c0e363231500f3f366a11642917b0847dbe45dfa4829"}, - {Address: "0xBbA4B237fe8C33064b4bB51a236385Ff874445c8", BlsPriKey: "0f79dafd2eda099a9bf1d604fcdee31d29d5f058bcb8f4acfdc5fc407f69dc47"}, - {Address: "0xBe6e4235E7dC80835bf6326607f6701B046BE1B2", BlsPriKey: "ef4885681e5df6bfd4179aa7dca435d61f16094b4f7e7f361bd00efb976ffa63"}, - {Address: "0xC046ab6829bA4A7cf695F1CE39Aa121fe2d2650a", BlsPriKey: "863b4fc442c34e4296e0d510bb5a6b80738ab7a95c26551478a5c598ecabe368"}, - {Address: "0xC0cDc35768Fe19eF60D287435c625f315f70eA51", BlsPriKey: "f3ceb0cda3517bafd1764a28efa897c0d888b8bebaf89da6a320ceccc0680506"}, - {Address: "0xC132eb0bD93De571397A26d3e30Eb77875fA7d97", BlsPriKey: "b7d088cee9374d1d12c6ffea2cf7c36e0ff85e32f98bb4a683212ff995228b1c"}, - {Address: "0xC36b3c49190Bbc027d08C6757Eee6F81A8B8d0dF", BlsPriKey: "951539769615afb103a4da021a6de2fcd0835ce70f989ef65598b6dc45a2a11c"}, - {Address: "0xC49034EBDB90ffD6c7767FF85ae3B30e03C29CB0", BlsPriKey: "dc1179ab707f8b01e417f69d736e686ad94f2d634805fcaec0078facfa222938"}, - - // 280 - 289 - {Address: "0xC6D0B4180A25d1A7EdA9Be2D8eE9dd0D41d2D75D", BlsPriKey: "ff7067ff7e2b3ef52275c5187a252ba5b95bf04d9ce33c4fd723c11af8ce304f"}, - {Address: "0xC7D97FE4962F3990f93421a26a8020EB0898c5e6", BlsPriKey: "a92bbb938ef4d0de6ff8f7da5d0b2a88ff812ad67c7cd574235130f8380f2343"}, - {Address: "0xCAcd563284f44dAb78CeE1E1BC74C07042b414Ec", BlsPriKey: "3136e40ee1d841c52ee28979d3bc84376f68e026ddfc2cf07e00b581e95c9b12"}, - {Address: "0xCB4c0864bBD5921E0Eb7951Fdf16E7Bb2607542C", BlsPriKey: "1052993a58b6189cac6290f5a14521b6508100f1f3e37918403bb3857f15ad35"}, - {Address: "0xCC332c845b6Bd7d28a5C54a51D5ea32C08cC2369", BlsPriKey: "b052b85b2998977978e6f217ab9a17dfa78c1644297cf8e33b9f0e17a5a4e244"}, - {Address: "0xCC831ce78Ee204C124a7Cc1A5d55bfeBE58E924B", BlsPriKey: "275be409a230e99a4e69b128a4c5db7c3ba966a3cf7da65df5a9ab095939771a"}, - {Address: "0xCC98Fe686F3Be69566F64F550E581Ee97647D8c0", BlsPriKey: "5e3c04dda0ebf2dbb75a0ccab9ca1487d543a6fecdf12ab909450e4ffd1a093c"}, - {Address: "0xCCe50309EF9Ad3EBA4fcb822Cc3878c5485964ef", BlsPriKey: "26e607a18e886992872ecbb9fd5b287991dcaca845c376cf9f507cf1885f1013"}, - {Address: "0xCD929182222226982c3CB45D98Edee24927F70A8", BlsPriKey: "5c613bdcd9db8a6bcb3b2195e9af3b9f60ab1280876c8885af60d851f50ca85f"}, - {Address: "0xCa6Cf168c91bb6Fd5C7fB224b567Fa390DB0FFD1", BlsPriKey: "ce5c3a5f6b37c9f70489fcb43697866a54792f0996f6b69290a342ac138b876f"}, - - // 290 - 299 - {Address: "0xCb1A498eFe2eA5Ff136Db7D826b1429a2702B9AB", BlsPriKey: "c60a5e08ea12388f365f4338ec2ea26b85eeb289b152c00d4b7f7ccc5f350157"}, - {Address: "0xCc4f14C63AA7BaD2BFB612186127C10793eC1F58", BlsPriKey: "c1901760563059ba9c7c541f2e4ff0f31d161dfee9e471c004620cc8eff2352e"}, - {Address: "0xCd5B0539b872914bDB4d83BF4A49131CbC984Cc7", BlsPriKey: "7972f3e1996d7d24142ee65995e289f2b067846d2b39fe549d0d39faa6958f6e"}, - {Address: "0xD13C3b87cABc9bc3E1C33d59780c415ffF0F6454", BlsPriKey: "96cfe59ecc3853dc22e0c0e956bb325c7d0320b2fba6e81ce02b87b19023861e"}, - {Address: "0xD1A3bBB32805bdAcEA7509BE202972be13e12E33", BlsPriKey: "376b3ebd744e6eb06edad9682c61df02cf38ca3ae5b0e6fefb40dd4ba3db4f50"}, - {Address: "0xD351CF869089ec9b903d7e9Dd13d9E1fA98Cd9CA", BlsPriKey: "20f5901795c4183ec720e98c6051dd766e756a6492ab41d8abd92a680f5b8c3f"}, - {Address: "0xD36077cD3160A5345F1a9A65BAE04fFf811B987A", BlsPriKey: "029777244961fe254ed4d3088b05870ceefba3afd92956a71caad19785665800"}, - {Address: "0xD420759A7B75F797B026d5eCd945611f2d1075Ca", BlsPriKey: "de6542932cc07389348517a662b99f8383405cce72afe874c37799e77ec94541"}, - {Address: "0xD716df51d645aD7E3a59539d45Dc632ec6513aD3", BlsPriKey: "90ba889861d1bec1bedddbb691b233da0e46808a9571bf744adb9e1b4e65d45d"}, - {Address: "0xD905Fed0e733CADB51496C1CC0A139e20fEFD37C", BlsPriKey: "302aafcf433a46ecee87d466ef61af8371d9c466d779a33b6cf48c4557c38837"}, - - // 300 - 309 - {Address: "0xDDd3e231d0CD737E82d080DAE41c3A4B087E7b8b", BlsPriKey: "6f7c7ff0fb3c474abf835b4303fe2d557893846d7d7addc4be3bc7cfb5a03205"}, - {Address: "0xDa4CE4A006A2b5EE7c1F48B2780fedb39a509593", BlsPriKey: "fa46f9ad6245c8d9fcbbafeedd7c7fba79ccdbd1151a234ed4ccc270b6e2ec5e"}, - {Address: "0xDb04208A0f67A3C1CbB900baeC864369c27B182F", BlsPriKey: "28165dd35613e3289795130eedac62f6e67baad6e9c16ae7d953854251cc4e69"}, - {Address: "0xDcB67CB0CAC26bA013C7d6cABCB10920e61eCF70", BlsPriKey: "ab2ee4887e4570cb8b97ed97d8d8de09883ebfc93b22fe0302d9f893e58b9117"}, - {Address: "0xDdBe700758a452F2Ab02BDe237ff6Cb1fd39DC91", BlsPriKey: "2ea589aa0fdfe43627807757c2b9fe2a6eeb64d92660fe891afeba49b0f3d873"}, - {Address: "0xDe6eD0AbBcfF62fa956A39215EC452352f71FEf5", BlsPriKey: "f101570484436da7f79e24bbb51566be154657f11fb05e3b3c0e476d6ed50624"}, - {Address: "0xE0Bc6F5cf7Dd5795998D46d1Fc85eB9EaC873eEe", BlsPriKey: "f1e43f7dfeb8bbdf00d57c08a134724019566caf7c3c8b176d03f4198e52643c"}, - {Address: "0xE0d9D74036D37684E36cBb76Aef8563D58D229c9", BlsPriKey: "f946b7537a57f19e67ef3c2d5346efeedee7a19f556b7076423050b1c496ed50"}, - {Address: "0xE190B5677915fcFEDD1d075E28C1dC9AF3F4aF9B", BlsPriKey: "b1644210d93b61fdf5e0f48b6e67daa5d81fa683e0db7ac9d39dfea344c5156d"}, - {Address: "0xE31f391363F2f09B4c7BFc2b8F797Ab5119033b1", BlsPriKey: "a8aedec4d58a40a39b0b49700974ec346306a86e681732b841836859bbe8f323"}, - - // 310 - 319 - {Address: "0xE3B7e3163Cb5646C3aB72233e899ebeC1a677f9E", BlsPriKey: "c79f209402322d85a6cd333648f8788a9d50e97c91ad9e3fc579a08d3c3e6601"}, - {Address: "0xE62185a7fEad984F071A7C4bC88fF5548b8a703c", BlsPriKey: "3ff68d6ddd04a75dd69215ac8d900025e75c1c0b68c794232f6030aa754cda5d"}, - {Address: "0xE64dE8594090cf41a7c63353faa3A6fc19e24134", BlsPriKey: "4dfa080b507704e15be43e9c40dcef78058a5a78050620c13a49efd087fadb3c"}, - {Address: "0xE6F0E07c91F3f36e469b6bbbBEd5aAAFE36d8Da0", BlsPriKey: "296bb9d85b733084c568b546f73fe759e3a3da106c98ab22fbd343ee356b6750"}, - {Address: "0xE85ae0aD9d135AdF59f578e167e83C9024139cc8", BlsPriKey: "3f7d6935cfcbec66a13ce714f6d3c2aa27a3f76f4b157b465b90e564f6d4b953"}, - {Address: "0xE9c5E4E5356C43c0Acb6315B99EE06b9a2444671", BlsPriKey: "b09f3973172e3aee0b9defdd7f244532b0587662c7154c515f4873db778b5937"}, - {Address: "0xEA7C41f1BbA4376A39ce5c01A51F3a4a3e5A8ebD", BlsPriKey: "ebf10e118df6ed2ad394c980fcf9ef2957feef6e56ab13f6d1a6ecf34257be14"}, - {Address: "0xEFa188A4765422f95938de1e3FBDB7dc6FaDDC78", BlsPriKey: "443bde844316931cc6b2f1df2b095251ca1d7465d6dae6cef4767b064efdbe3f"}, - {Address: "0xEc616773962E7094295F0F31D416748747535E37", BlsPriKey: "f3f8ecabd4c68b5a6502fe769f6cdad030ac8dd0cb2be5970d566bfbc182e847"}, - {Address: "0xEe406e757d1CC84dEAF3696A5C9f4507aEAD4794", BlsPriKey: "e72e7353c26b8687dd821614a3e60a7a4e9a180557868a0fa377df6d29db6a07"}, - - // 320 - 329 - {Address: "0xEf6F999b96f939597EfDa9e19Ad02A7Fa2b1aA20", BlsPriKey: "0534cc111c7cec80a6ee6d35fd851bd1cccaba71bef561d1820faff0d70d3336"}, - {Address: "0xF3c55A45c03e17efB0A50163e0aabcB70648848d", BlsPriKey: "c335745a75902f1e2e6652645852ee1de5ae55a815f39742e6538325a693063a"}, - {Address: "0xF6C5363A8E2C792697B01da8c0bC8cCa6668bdE0", BlsPriKey: "077415b86ee60804707ee3d1c82e1cd60cfa0540f2824874e10d8c5371b7bf17"}, - {Address: "0xF97C989cc1D31aBdeE222cCe7ED8A3a3e4D45A2e", BlsPriKey: "03fe1e82055c75dd923856de914b0e84a905731b05fdd9db5d3241c15339e330"}, - {Address: "0xF9cc6BdB428b23e1f8485aC95b22f8D93FC5a425", BlsPriKey: "786efb123c35c56150bdd4dcd5dc0299e0f02fe3c2c156b26728b37680166337"}, - {Address: "0xFB48d5809AcBbF5C350a12b955c76CE5bCd1c27C", BlsPriKey: "10ed56caa7d51a0cbbf51e3a82c660aa9f286a976ad35ec2f3977a54cba83864"}, - {Address: "0xFBd3b6Aeb408FC2a99d82786565a9C981d63Ef0E", BlsPriKey: "d5da84ab77b48dcd4b1c403b5b7f710a4f589bdc2a645b44765509fe6a9e271f"}, - {Address: "0xFC5d56e8f45F7D918b429ef9eCAEF439031A9638", BlsPriKey: "dd4e51fd7eddba81d8cffd255b227ee726edad2b17f6b2a77e6a3ce5b01bce2f"}, - {Address: "0xFc0cC772Cd483ba94030F7Add507B5Bca80E9a03", BlsPriKey: "eb3b5c7972dd1037619d0508c61989c4aab6fce120a668e7a1820e853caa3762"}, - {Address: "0xFfa7dE5ef5774B1211328e7C40A8030af69872A2", BlsPriKey: "755120269b1c7924321acded089552ad4e777949bef3a62c6c107b54dbaf203c"}, - - // 330 - 339 - {Address: "0xa1aB772E82de47DBa2Df2A597729716e055f13e4", BlsPriKey: "ca18679cb890e66df88607bfb521fb7352697dab15d2c43fa679aa24f3850e31"}, - {Address: "0xa525D0E0408B22Ac4C88ff5B1b18F6a04F455A9d", BlsPriKey: "a02fdb8690290a625949b83ed3af73a446fd08859dc1db4105ac6fd0cecc1f43"}, - {Address: "0xa579b6d75Ec067A3281348319F16E8cd23f9e6eE", BlsPriKey: "1c13529c3cd5027209544fddfe97c5d833ee84980384b974c549ea11ac7c7336"}, - {Address: "0xa756b3920807ef8F5b356dc87204FE326675fC3e", BlsPriKey: "fea117010c95ef67ee1002f1fad8b993fae49385f2e75a6d961cd7b3a0c55f61"}, - {Address: "0xa816F63F1375d3d14Ab3CCdEF7856E29c18Ab574", BlsPriKey: "11cd72b5692fc7053447940b5d372d4eb422677f445f9c9e5f6f17e0bf2ffb72"}, - {Address: "0xaB31963011e61F6c9c98f8332fB6788C6843d284", BlsPriKey: "c7a57abf43b873cef811cd8164164275688b0b02aa67d223f5b5999382d8c96c"}, - {Address: "0xaB9c949A9296172b6AE2b87fE5a87FE20758A59c", BlsPriKey: "0ae12b18e7a5026316411f38d4cf2c827f50a40f0cc37e49d333658e9b388857"}, - {Address: "0xaE030b5785357a5686Ed9b89EF2C0D82a5AA4650", BlsPriKey: "f85e74c71688698d49242c048d58eb28a1809b84f37703a05114d1583295086e"}, - {Address: "0xaEBc085A0AF631a81486b680F2334369DB2c7bB3", BlsPriKey: "19d94d05202e91bff432c2fe16badc5756241f60a53ca13950f7dc90d5780827"}, - {Address: "0xaF4a7499aD01ef627a9985152711ca45d0E86B7A", BlsPriKey: "31e1779c8a253b98fcb8273e2aa24ff2f6f5900b172065554676519bb434676a"}, - - // 340 - 349 - {Address: "0xb09490021A24F17509AdeD7A59141E9f2B15Eb68", BlsPriKey: "d46313491f0607c9bf2605fe0af4c64e2e01d50e88327f33733d88262788f426"}, - {Address: "0xb25D4f96f06513C851D65f6bED3D9ac0Ce4699B2", BlsPriKey: "c6b3bf419c80eb970e5dca990ef54d1ee552d97a128e83e80e4c3bdc9bbe0521"}, - {Address: "0xb25F57695D6541f712856aEE545aa8c583E153b8", BlsPriKey: "8a663d5cea54ffe3939147b411b8683da36b16e52a975afa0cddc196297ef93f"}, - {Address: "0xb4453086a8b623905743c083A49F60821a1C3a97", BlsPriKey: "17d985fcbb28ec4b48c3e01ddf6160db7dbaf283826715f3327537dd982f8b19"}, - {Address: "0xb69FD1866215B8d6a6A1f99a71ce565b654F0156", BlsPriKey: "1934fdaf900e201a005a78d8b4580fb1955c6349b472554ebbdddca3e1adb51f"}, - {Address: "0xb88c75b52BE0Db22B1EaBaCc161a73E465b50F00", BlsPriKey: "f6180b90bef1d8781eb06e82d586e4cf1430d2a7e5671bc2dfc654701a3dce72"}, - {Address: "0xb8adDC78d695F532DDC2c8891842741bF6b627C4", BlsPriKey: "380dbcdaf8949878094eda6e7c89da8a3ca61cb78ed9a108caba223b4eb84738"}, - {Address: "0xb99C7D8F3D2D542025D8f45E21FE83a5319422EC", BlsPriKey: "e8a67ef331e2e65d756020bc8e6642a1c7d16619cc71ead0244d2170dfd7cb6c"}, - {Address: "0xbA30b84b8d0F106d936Af77D93C6653116EF54b9", BlsPriKey: "24f125b743f65fee238f66874c59e1bbe55bee5cedd8608547028a3241ec3f56"}, - {Address: "0xbB61Aa32EAab4f5C0b1D66B3649aD97D9836576C", BlsPriKey: "cc15df81b05c0f5d06b291eb8ca99bf0b579a0c0917805f4a6ad2c3a69574463"}, - - // 350 - 359 - {Address: "0xba155CD47eF9cF07bf9140721af95ffB76D4EE8B", BlsPriKey: "81f0d207c76b2b3a1e2966959bab28ef967003920da3ccb91bad2d0057e2c118"}, - {Address: "0xba98270b18E72A885370567138951af6CFc06d5c", BlsPriKey: "710bb91c90c9a53dc6d2aa457e99a09751721d4d511316dabb5232751767883d"}, - {Address: "0xbd1Afa5FB3B24c50A50f7a99A252517e1EDb6E14", BlsPriKey: "7e5c4196b26f497b1a91fda76eb24e4d7d2bf16742182201f2cb762de79f0a34"}, - {Address: "0xbd9711147b5d809B38650626be865F017B91eA63", BlsPriKey: "b5f5a775aec2f18445277980e2a5e97c5826f2ffe463f9e6fc2be13f3a6aaa29"}, - {Address: "0xc0BB4aA4F2C15c0fD86e84CA8e7aFFC9d6a1BA8c", BlsPriKey: "dc2eae2c8d25b09396ba6dbd3eba7796b761274548e362a06c152b9bcb48782b"}, - {Address: "0xc12953820Eaaf808c0181de242b59a72e3E55606", BlsPriKey: "5ff684b09775a9207ef31faa4dc2eb31d6e4541ee637668ea8ae33213890656e"}, - {Address: "0xc129b78786Abd0Fe6307048A95D38D5C22e03732", BlsPriKey: "5f0473fe9d8a65bbbedc02695c8c74ae6a94abe9bbdb76aa03aa5c381b999641"}, - {Address: "0xc24693350F83C446A1A65FD29b12D144600c8A56", BlsPriKey: "845bd6b32b88ba9b37a01a810e7ff155fcaf457475f323d4fe64b8afd2d29769"}, - {Address: "0xc2b1dA16bbe3F9106e5bf535Fc7458419c98D102", BlsPriKey: "40453675a9ef8b39893be1053b2e6a019bb57259f5af6300a20944cc14007806"}, - {Address: "0xc7B8417d78cA2d0833b0016e8E12f8E5679a44Eb", BlsPriKey: "c7e577f1b5fd322450d04176a4d8faf183c6ab16c6736eb31716044ce07f5434"}, - - // 360 - 369 - {Address: "0xc7be7908Be33a58c08FBc5FD3f06b1d4B7781641", BlsPriKey: "0c41279009ff436c25660669b0d4a341c39f81c281b73e7fee6278e6b9f4931f"}, - {Address: "0xc82204e189EDF63807270d91c6bAf1d54ABB62B8", BlsPriKey: "621495b05112ddd89e6c7622f7126e1abee9cd6574d9f5ccd2615ad77e60fd32"}, - {Address: "0xc84a3D4461f5a2f216D488Eb4F4852f523Aee385", BlsPriKey: "3a9dfede3c1257a04e0ad24d49f5c3bc369c200cc443bd4922448af21e176145"}, - {Address: "0xc9dCBE9CB27eA03fC1c57d1B4b0204a3E9bC8Cb3", BlsPriKey: "eeaa0f8ec12f30350ebad93c657f7e477a1d3a9bbc05a465d0f0dfcbd73d8818"}, - {Address: "0xcAd114c0d8B87367cc598A4F13eEBa55a86C5F06", BlsPriKey: "ffbd4893603e52cb0a3f79befe8d77d073f8f2fc3c7f7ea9dcdb7490026c3f3a"}, - {Address: "0xcB8196eC986DF4DF027fF7406efDe74D3549f192", BlsPriKey: "63f6b639e4f88a614b73078ce1a2c0d9bff3803e05f1fce20ca03e5d5c069d2a"}, - {Address: "0xcB8Fe1D1ae31c09B3EA6D18A3680E00004E54De9", BlsPriKey: "e1137db2b6ccd06d60efead17b5f6511918f11121312fd231a8bd7a64d50f03c"}, - {Address: "0xcE1f3C5f4Ee8759fF451286E90c156976BEe3742", BlsPriKey: "26c9d1456c2e8831b036e7064d453ab927491bc2b6050b3128ade03b7a465541"}, - {Address: "0xcE319c2f6c4745b0D41530b55b1Efb09392Fb357", BlsPriKey: "cecd4d19f71fced3e7f1c111865bd932c1f207676b5055445ec8003fe40b340d"}, - {Address: "0xd16fb86Ad95B25baDb44092129cb6aA4FcD0190b", BlsPriKey: "f0a8a5aa85e83f0788ae32fb4a0a695bad7e624d4e958ef0dfd7aedd51e77961"}, - - // 370 - 379 - {Address: "0xd20331D75CF373ee16547Bc00b3b71a283187A31", BlsPriKey: "977ea3be3b10801c2b89a3d7f45f950c3d0edb4d01bba2f777dfd485e898c047"}, - {Address: "0xd24640d8fDE68cBFDF25C41613e4B593dF1F7845", BlsPriKey: "7eac3dae78aaea403c89e3c8b1630f597cae73488b9f3c32b260758733738b33"}, - {Address: "0xd2ab9e42DbFd509dfd9Ab937Ac875c3953Ea6B63", BlsPriKey: "076726a23ccb51988c4654b72a63c86ee24cc123849752432cdfa80001834d34"}, - {Address: "0xd41160791b8886F8e45ac1cc9ebb5FB9c7118fbE", BlsPriKey: "dad7d3fde948299c0dc8b1fe1776aefed32b1438f0ea5c94db51d051bb61e94d"}, - {Address: "0xd892C406dCB97B544cba6354fD42C18c9175d8DF", BlsPriKey: "03e42e814506c82ab0179ccdcfb7b1e30950c1be0c6e8062b4cf0bdfc7d26d09"}, - {Address: "0xdE0205b06C6517048769B673014E771f2F978bd7", BlsPriKey: "d9cd084e08eb167fe5b3206032f3f99087eefafd5c4d8129b19cae058f0c364d"}, - {Address: "0xdF73134FB98c299DAA522Ceb54E87C8Da6a116c1", BlsPriKey: "c91385e235286f9faa0af2e10aea36fb287330efeb74cbcefc55248f3422ef59"}, - {Address: "0xda1BcF114a3f717D179eeB789D1d9248A8a1631c", BlsPriKey: "3ff6d7744346eb9a1359de4cf2a71b05a20f3e680b30ccaffb17fd4b32beaf13"}, - {Address: "0xddBb08c3385d8c9b7eD70507761bb6ae86601b36", BlsPriKey: "708edeec192b763d2be631ee4bbbf482deef0975d27136008cc6e518e657251a"}, - {Address: "0xe089cbD31bab882923c5c8D3C5432eAfA680E4f6", BlsPriKey: "ee3680cfaed342a14198d65ace8e8d07eb8613c96c4421c92356d4b60b3d3711"}, - - // 380 - 389 - {Address: "0xe201AE926cb423D61C67364FF3C736359b8f52C3", BlsPriKey: "b1d2dabac0c57ce92581239e0662f358f2a3217603c75a72785c51b6730e1e0c"}, - {Address: "0xe21383C4dFeA14C3124e86C5F987045Ef2cF3F42", BlsPriKey: "00855f94388a2f59be2eeb8e8388b3288b3e301315ce124e787eb4a2a9206c53"}, - {Address: "0xe36FCA53f5BC3FBa611E7CA51525755A6b3227E2", BlsPriKey: "f714c52565a3c9a499a1193272041963baed808e6c1a50f0040f58f7a902b635"}, - {Address: "0xe38bFD8B5bB44D9ec008ce94607a4d8485471B08", BlsPriKey: "7dd3a66fba839c3636495cced7fac0aa1dcb534571906da068edd9601430d53f"}, - {Address: "0xe67ce5A7d9BB454cfa022F47e1fC13Fc1D7bAA2d", BlsPriKey: "b7906806762b3ab12797630c711e75fcf40b0a4b8338c7a4bf30093096b2e95b"}, - {Address: "0xe6A45a867f4d8a12E66ba38012327df10Ac4E5AD", BlsPriKey: "c2a5eb1fd99b341d0d12475a451f74b0934959e465c63986125956e8e9f84c6e"}, - {Address: "0xe6d861421a4D252d4DC5D9D34B3EdC2891473456", BlsPriKey: "ecff4ab879de121933f992be57aa8fe04010cd2ecaf30412d7ed16e2c9662116"}, - {Address: "0xe7f43Af7D0879F904D9a81C469142e88F562de4E", BlsPriKey: "d0be4da9e7f85112cf65262d88155d68b8ec8b25b48b6edec45a616e9cb07f0f"}, - {Address: "0xe809bF710657bD64A238af34085156D571037BeF", BlsPriKey: "e075d8648c623297346e0e918f2bc33a73e079e27742d4cceea98e8bf15fdf4c"}, - {Address: "0xe9bD1cA4896533cD6648ea43b1A7D68827aCc2b2", BlsPriKey: "223991e909cddb866090c92919368caa80227af6d21e90bac150622c9dd98c68"}, - - // 390 - 399 - {Address: "0xeCF73C626B228664471d3884D54d2bd9541AD4bc", BlsPriKey: "04bbb9126561b95f7a84078724823c5c69314e77dc0294e3a8cfe3a94a9cb570"}, - {Address: "0xeE584723c953C4DD049edd39738f5247740a9594", BlsPriKey: "53303280087708076f10729fc311f76e1ad59cd095f3121229fca6efc0958225"}, - {Address: "0xf105C333253a16C1Ae24c23191E133E06C9ba501", BlsPriKey: "8e033b0eab9d37e62b54fa7336ae2311c64e9316b8c7c7f0231ef9d61ef3c042"}, - {Address: "0xf216D7d113ee2AF079DEF5056CFAbEA5dE2Ea853", BlsPriKey: "3b419f6fb6ac60ee821d5ddc5f5a7ecefc530d727182d59f1263808f8a867d55"}, - {Address: "0xf2441A675f12977C719ADe3e2879eCf5c1a91f1B", BlsPriKey: "0acda5b8e2d62f777a1cfa8e94f6f0d115929ed5c4079fa1681c066ab8f95c48"}, - {Address: "0xf63217cC7a99b7ca4c0B234BFbffC62e6c1C62bE", BlsPriKey: "3289d509194fc75ec1be86278748d45efec86d95c290d770649bdcf3dfbadf28"}, - {Address: "0xf6642b7CA43d333fE8CD943A5423C6A28d5a8F28", BlsPriKey: "347c0bdaeaf83c28f0cd901f85af1165cdd1c647b981e092cb49572745aa1504"}, - {Address: "0xf66508CFa2a6a52ebC708cF048334d1C6871Fa0F", BlsPriKey: "7dd193b1e19c2792315d7bc0181f527b4a46aeb1fa74998434bfcf68f49c1237"}, - {Address: "0xf7D06869051f6470b3a40C6A733571d135641D3b", BlsPriKey: "1e17f7b960f6867b0f37cc5a18b30697cd6b69b99bfcb323043cbb3827fb174d"}, - {Address: "0xfA41EDfFf9325c748140ed8Df677B4358568A529", BlsPriKey: "349dbdf228cbb0730c9754a0a188544a1799189050ccdc83c22ac0e0fa37153b"}, - - // 400 - 409 - {Address: "0xfD87f1fb4720cD7f89914D42BB42cEA7c23fcccd", BlsPriKey: "f21843dfd11ef1f2b1fa5930b56024287944ff75c441deb26cc40deb09b5ec01"}, - {Address: "0xfEa557d30651C3F0AeeCA12d33936eeFA0fc4f93", BlsPriKey: "0f946314c071958e26d626fcfcd0ce93fd156b42de77b9c62e4fd9fe69cdf539"}, - {Address: "0xfF86Ff1FF457c3eBc18D71ffA30cfedd0860559c", BlsPriKey: "4b0d338b30a055bee3e2f070adc93d341b9316a315b4b4efe1639f0be2c1c10b"}, - {Address: "0xff1bE0eAC9B6053CD656947F0CcE7d277FF720Ec", BlsPriKey: "d94e179e77a8bf71206b2232eb826a9b5f8a64c55d919411263511e3a2ce7407"}, + {Index: " 0 ", Address: "0x007579ED2Fe889C5255C36d4978Ac94d25811771", BlsPriKey: "744df5c4bdc246c6fcc414a72d0311c8b3d2a1aafd2de90414f499067a6d8828", BlsPublicKey: "2b061c104d64a47959acdcdd963dc5259754df23f28ce81c9567da6f9cb26cf0be92fc1cedcaf0fac42ae7bc60438617"}, + {Index: " 1 ", Address: "0x00F98965458a35f3788C45A095582AB18A5ae79c", BlsPriKey: "1af3d58cc5f52a81daaafdffcd0a249b66f563afddee282f0d9440e1f54c8d01", BlsPublicKey: "98c1fa568f6ab820e2aa2a6da02bdf3324301ff07d0cc5bdf49fc01799b191fe7427b6803191e5e69478add42931b002"}, + {Index: " 2 ", Address: "0x0102B41674C3ac2634f404d8c25C25Bb959fE952", BlsPriKey: "3ca50987ca2406ca7990cc3946f0e0cd9041fd3caae7601a63e90315f7335e2b", BlsPublicKey: "45ace9bdde2190b2019a6e6410b8459f3de7c6d7d616341cc0b99c4b592bb07407367b018c79543dd9b2122ae0a0b78a"}, + {Index: " 3 ", Address: "0x0178A7bE4399c1968156edE4f52ae91953ab9B63", BlsPriKey: "8bfa48f3c35023a7a80aa11b55ecad4a22bb90f193b7586cd095028dff0d8e3c", BlsPublicKey: "ece9ab64cbcac9f980e657d2561eca5fabffc1aff165adc923baab131e409d51e949b69d65a23e652fd0fcec3a118881"}, + {Index: " 4 ", Address: "0x0215c51A3d67Eb1e949bD1Df8b74D3aef097e92d", BlsPriKey: "a42c05cfb5552baae0100e5887664088ed29c2a43c449e2ebc7ebc57dfd75a6e", BlsPublicKey: "6b78c27b1ee69e3951f57e36b96df4c464bfc22416e5772569367abc122bb71eac0bcabc01c94c79e84de792652bcf8f"}, + {Index: " 5 ", Address: "0x021983eA41fbeeB39F82a9CAf1A83476F0cFeEDC", BlsPriKey: "cb2f6f4afd3746b90ce6d6c47475dec4a3b7ac8eabdae1eff577cb0f7e025b3c", BlsPublicKey: "b55c42e584aebf11f4b559b705dee9c28d40fd409009e54e80563e4de9b495f0d5365c8d0c11b264f0b5338528eece14"}, + {Index: " 6 ", Address: "0x03d1a55eA1246efB257D49D9286f7D370bd09c97", BlsPriKey: "983fc83da2c1ecfea6dd7c782b46c1206bb85fc27a8f53c4936d6efec47cc214", BlsPublicKey: "8e9eb3dcfd1b698bc962feac9725b7107bdee10fe4ab4f2c2bd8a686bb84adca2c78dca092f5b31a014dc06e9faad707"}, + {Index: " 7 ", Address: "0x055b95d5205B5711099C32626Ea61481779a2233", BlsPriKey: "540e6fa35dbdbd519844fe1f1ed8b9ffbee1706c6a9436b6ce90190495939d09", BlsPublicKey: "cddff5678c61a361d06a8b984936a02f943a15806eece17ef0a1d44b9638b4ac3a3c81d6f46569a8e8aed6ef8f8f9f81"}, + {Index: " 8 ", Address: "0x0566729A6FCDda16287777baB5D4425AA93bB0Fc", BlsPriKey: "3b89483eee51b4fa343986e79aac7f6dadbca933cbd38afaa76c4d9f631b440c", BlsPublicKey: "01c7419d00f2e86aa9606963f9dbf40c3aa843da8013a1bc5c321f5c1427a67de2b78fe2d716720ecd35a3bbf8a1048a"}, + {Index: " 9 ", Address: "0x05bA7FcC4c1d7286f7A3d5552DdF305677338c22", BlsPriKey: "65d7c37bbddf3b25d754ab4cbf62bf28da338c2e84535fb39519fc50a8451a69", BlsPublicKey: "45aa3699b2acacb576aadcac60f29394cd5e2a88dd793024793f28eeeab13ed6f271737a672b8ccc1fc7e523361db984"}, + {Index: " 10 ", Address: "0x063893E8EfA148E29B914702AD6A9930d41C8F13", BlsPriKey: "022d1b5600de11ee0b0a8e48627d31aa368164617fe556bb9178251a66164d01", BlsPublicKey: "2ac86b44c828a16c85a8f68c0dcba07f8d3bef1af5e98ff21fd7983dc884436ab6d307269b0881998c745aa38f59a58f"}, + {Index: " 11 ", Address: "0x06693dEE3d72a30075E7447b18c6f3ed8AE62174", BlsPriKey: "0e0f6d48b29cb273a667121338f6d7f8e50033a1b08b791f69910695f641194e", BlsPublicKey: "51b5464ce4c433ea5f838f59f13fa5fa37bcf2e28352fdc961aa0225ac60338a378fc7478a6f3bafcbafa50a1db15396"}, + {Index: " 12 ", Address: "0x066B40c45D06eEFE8Bb8677fdaFdaC5C8dF9d09C", BlsPriKey: "1bb48fedf4dd6011757f3925f686e20485a876badde9c48cc3ee4bbf4b6f1d5e", BlsPublicKey: "2c33e78e325d386ed7645cc46edea923a0a601b51919fab492032a58a3ae63ed3b958646ef1f3ab7d66209ab5a014704"}, + {Index: " 13 ", Address: "0x079C1FFEaa70Ebdd2F3235b2F82BeE0b1101f092", BlsPriKey: "0c705c116f081fb8b7c0cde45e2027f17f9f7ccc2ec31bb15449db6978365022", BlsPublicKey: "f1aa3268fad40fc81722c3c1659ee467a81f60f6062cf53a5b0a90958970d7376898b5106502d39f566f5f56c0b46582"}, + {Index: " 14 ", Address: "0x07Fe4B973008c53528142b719BdfaC428F81905b", BlsPriKey: "71fd4af428fe1751286882e48777df17726d84c308f66de1575b2ca5705a3825", BlsPublicKey: "21225288b41b95809265f98322760e08dd02b374d2978bcb6860eb20858ef61ccd32f5e3ba5a18d4d7c5f6a3e9ba6c81"}, + {Index: " 15 ", Address: "0x09531Cea52595bCe55329Be07f11Ad033B9814Ee", BlsPriKey: "0a596f0eb4330ef8d97929bea498d9a5f10597717616284ba043a55223658e0a", BlsPublicKey: "1109e93e7d28f2673a56f6dc9efb7ac9d49e4e737441ad516ed71cb93be575ca5cec4a0d83ab598315ed57152f5af503"}, + {Index: " 16 ", Address: "0x0B4B626c913a46138feD9d7201E187A751DFF485", BlsPriKey: "eac96664440eca19ebf1cd5c2e83aa2c1b033ab94cfeaac43d5b28f36f858627", BlsPublicKey: "751e321f573b1604f3ef0a78ddba27aeb800fad6f4132183456d98a1bb1b5f6b533f976c2480b98cf060ed86ad202694"}, + {Index: " 17 ", Address: "0x0CCa9111F4588EDB3c9a282faE233B830dE21A0D", BlsPriKey: "0e8fd28fea928ea0c064d7499f1c905b8be069200f963387d5d97ef98e602311", BlsPublicKey: "ef804dce974f444c263343e9536fd38d50279f7bca43ea77b755e1389dc029ac562ad9c0e8fba88d3c63600828c67c13"}, + {Index: " 18 ", Address: "0x0F595ed534b6464eB2C80A037FFba02D23AfdfD2", BlsPriKey: "93a86c3211c02a5f4e1ffdd77dd319a673007ac93c38abd1e97d3d04f690e23d", BlsPublicKey: "208a5d9a1a29fa3c3533c26c36983a49b7a644dc283ed6f75b8ef6c4f30a4bd6dcaab70fb040720e0ba7fc5a72de1816"}, + {Index: " 19 ", Address: "0x0a0b8c48e42c540078fD99004915Be265f380dB7", BlsPriKey: "617b9b811ab0479458119af16c143b5bb2296176ba61561a9f91e6b1f5fd0a3f", BlsPublicKey: "9db803fe34f1bfab9b64d9ccd7784b16e6d9aaefc972b31c483f8281bd5f2a4a29cb9e8e1d55084fd955e2982d16cd0f"}, + {Index: " 20 ", Address: "0x0e59b767D5E74cf7B29Ef9bEc3dA4c402d357C6C", BlsPriKey: "cad2833502ccc3c4e044079c0154a4014b4f769c199f275b227a322aa9a41d39", BlsPublicKey: "c93f081152df08421bc98134dce769d9a1a30bb74b3047ab25d6a45bcb299e616055ef6cd4265ff8b506ff6b9ab0ad8c"}, + {Index: " 21 ", Address: "0x0fAAda81c203C74CAc786786f7D428477a04bF9c", BlsPriKey: "bd83f3cd53ebb15ff3a4a320ccaa4223839990c9cf846bb9014025c8ebcf060f", BlsPublicKey: "a1e1cd7b903d56c5914ea0a6315c199940c8b6cc06487e12e8a0cd02ab2e20def5cbaff1b7698f677d808ed3ff1ee494"}, + {Index: " 22 ", Address: "0x0fd228bdFbe9ad0c898e9A0Fee2E6FB01f596F0d", BlsPriKey: "b71c9bd6a700afa659bab71ac1121ad86cc843d1c3c6722beb3ac6683d92c866", BlsPublicKey: "37c04f0e3b4691c1f3c1235a142b4c4d7cb34eebb49bb1856fc87255d0f0a32c6ca61a3e44a63cd9cc5382a08fa04c18"}, + {Index: " 23 ", Address: "0x123FF831333e2662D00c60A2C46f7196204506e9", BlsPriKey: "bf119ca69fa1802ac2e60b2c2cbf9d83109608d5a0d19fe286d6d8dbbc64104d", BlsPublicKey: "605759aaf3a91a11d5aa705242da21545e7899d72e7d349ff9b6d9b5790ca5fed73f694e3608346a6b4f32b5d44e8b8d"}, + {Index: " 24 ", Address: "0x1240775288d0EE975583A2A7022006539dADb354", BlsPriKey: "122ab3a111343a15a7111c1d7255f436c3cc81d1893d51e89a47edf0c6c4d929", BlsPublicKey: "aaa755635d3b4ede06fe77704a09ba4155eb7355e037ac6d315add74559c4ef7415eb495076d69a246ba6fbb69507b06"}, + {Index: " 25 ", Address: "0x127b8Cb71Fb78338d9EFFe47bB51c2EAd3995378", BlsPriKey: "4d105d4d5e1bbe49d29a87e9454b89e4324f4a6971b70833d70fe4d731970145", BlsPublicKey: "60c947e786ca5d13597defe1ec4e37c1dd8458462c95f1d9574da987e28a55d1f8140a9d109ce702c14ed5575f327e03"}, + {Index: " 26 ", Address: "0x141B0e0f05739B7B784654E973e9b9146473aAb9", BlsPriKey: "29b13696228a5ff6fe4f6bf941cd18310caf72fdfec62f291cd68478054c313b", BlsPublicKey: "6464a8e6e89503399dd7f8957100df9f99e9825c12dc6f9338ec31e766d794d51101d4089201943a01637aad36152b0a"}, + {Index: " 27 ", Address: "0x1492ebD0EcfD54B4c211b37C8891bA3493c52100", BlsPriKey: "952a0ccf2fbe1ae29e562bc52c9c40fb381f04cebf9186b683db3822705f0b63", BlsPublicKey: "c3e19ee9d2c5f722511054ae124e703d1ac877a7bcad71cb856f812d48f7adf5b70687a3cf843c2dc2826647a9226497"}, + {Index: " 28 ", Address: "0x1530A04592F9C3bF06aC6044525f08937ED38edB", BlsPriKey: "9fe110563f98e64bf742a0c54e5c5857738c03ed63ff66580d47215dfc9a3f6b", BlsPublicKey: "92de2a783e323c74be6295ac763262e20b0b2a1708fe0807beec369e6019c0e4488aa628a277c57cf70aacce582de705"}, + {Index: " 29 ", Address: "0x159f58a41F13ffC831690D81F308244A3b238523", BlsPriKey: "3f49e1df6b46674bf0179f820f6a6d60303f7b70544bf3316ef48ad7e082d962", BlsPublicKey: "397af4337b1ca1fb6bafd5e4428f19cff0b0861ea7fa904ab87d3714d753addd3c2a1ed1f9f2a7daba3366bfd2cd9b98"}, + {Index: " 30 ", Address: "0x16451cE5a762038eeA700A6aCd5F796DF3D6bE45", BlsPriKey: "a151fb462571d0eb58e1d0ac1fca6dcecc2ce097cbaff30423fb53e4b150e762", BlsPublicKey: "b2fef22a63896a11122f4332f06cb8b32757f3d9933197b70398cf490a0af9be97f588e649145d8a2da6ff8cb4a5de93"}, + {Index: " 31 ", Address: "0x17f68b4C9e1eeE6eD5bBa0326c50515c7816FF78", BlsPriKey: "843ee44e00259ff2df171edc9f55216100c7946cccd3e46d4d109a6a7ee90d5b", BlsPublicKey: "2ff3e426d5d5d049704a5f8ad772232c7a09a0a0c3b1a02c3f4536d4d76bc1ab0abf6220f7fc1a052dc705f254387f93"}, + {Index: " 32 ", Address: "0x19373b0E0428cc0f3F25169Cd079d27856b9f6d6", BlsPriKey: "be2507d4b1d01c3fd1af277edbff2863fa4edf78040e83050f3ef463879d991c", BlsPublicKey: "a0c1ac9e8a2693cd8676fce51f1b771026e1411bc0bc0acef26c827e4fdbdca9ac591adfbcc0d168905f99e8ae555601"}, + {Index: " 33 ", Address: "0x1B77597d6664f1fB4894c735Ea80cf250866d265", BlsPriKey: "8299644a589e27f51371917ac08dca99eae455a5bb8a1d5a534a33623cb7ca3f", BlsPublicKey: "c11200bcc72d08d970a46b8db00df3d3b6c7c72cafe442c5e65f477e073f67cafabfd657f104d0142fd65464bccf1b04"}, + {Index: " 34 ", Address: "0x1Db6cf99e231e42CEB0389E7828b16Be9b6a385f", BlsPriKey: "3c8b0a47ac82d7fecec8fcbc3f9ce69605ec4b74d667d6a8ca0844168a0fe739", BlsPublicKey: "4e9ad63878d51103892007d766f7e7182c230d9f76be3f5a0a7d06b6b7bad5717c311a8cb91d81d4efab34fd4a31fa09"}, + {Index: " 35 ", Address: "0x1F4B579f85E585039C56989DEB56377c529981Be", BlsPriKey: "ec3628e08bda9127f3a5a553438094e662d9306137a357b603d9ad55d11d9c31", BlsPublicKey: "0dbb46b8dcb7e0c100b1f0ae1cff95665168d249ad492809a0d160d7f3e525aa33f28b593c54961c5e4e5696cc1f4482"}, + {Index: " 36 ", Address: "0x1e9fCd9B1BDC53921d6a97D305f8a829Fd1299fE", BlsPriKey: "92a606d44bbcd5ef3d6ed9b33b546b09078c205a37043c0ee8e06ffafb5b6d72", BlsPublicKey: "84f3f5fbf4222f402ad5e99f752ba7b592e4f9b32bfada1d77f7b9a1fdefe0e05a281c234ed616632d15e2b3027d1416"}, + {Index: " 37 ", Address: "0x1eEbE25D248BD31B9A166326F2DF4bA9874Bae2E", BlsPriKey: "4a709cb38e8867ea75f29a7f14ca22cd9e116306cad8b70f01cf7fb2da87de01", BlsPublicKey: "330ec02611eb2f2345bd6c9c8c3958ad1d6079e5246e68ae1ecb616c83a72e4a09365815174419460b34e86145dfbb09"}, + {Index: " 38 ", Address: "0x1ed0498dec7bEb1C06738Cb8DAA54DD03D689F99", BlsPriKey: "a2a90405a2a8c070ae951e7918f8dd1b85ebbb3463ea6fe510db80a8d10eae2d", BlsPublicKey: "ed0c5c88c2583265175f06171876aadaaf68a04c0edeca8bcb0102725cdff098c0e4f8af591e4c716a055f8dd066900c"}, + {Index: " 39 ", Address: "0x1f6CafAb4e651bF17dCb09188496A3d55D1A7828", BlsPriKey: "721fd7d88a13d50652eafb8f469e724916921235a8a50cf43c1e2ffa4b51fb3c", BlsPublicKey: "dcf05bc1113bb69af973fbc256e14d1d8e9444da39279ff9fb250b21dd37a84ecfb1547d86a05d7b13eb145cba76ac85"}, + {Index: " 40 ", Address: "0x1fF28Fe254B0c42E5de111BFFC70D6e661619F6F", BlsPriKey: "bec3262486fae949ce5f743fbd18cf8263a90f319faeb0e11b09c2f170bc6926", BlsPublicKey: "cdd9f54338f03a7f0427e5911f96f5419f4eda5a8ca05c07c6b3254aff41d0a9da4457aeb118788d3a93115f99757389"}, + {Index: " 41 ", Address: "0x2195Ae95468B5128a89150139AA52b792a6418f5", BlsPriKey: "5297d23411e9ca53ec317b78d60e8311472715c9f2ae61a43c7b545db8d15c07", BlsPublicKey: "c8adfff56db05c3fd3716aec94b616d2db2fca67d95cc3de2c44f5fcb019c39618db2281daa0058aae83d2513e754b10"}, + {Index: " 42 ", Address: "0x21d02A81c2286e02D1CCdA4D36D4DcD27182bBe9", BlsPriKey: "8ebdd01e7c894ff3b4fae5c4d4f7df0e80ee08b484c01788c9dab8fa5fd16f06", BlsPublicKey: "6723e7fb9090e557d4267c75ae4fd259600dcccdaf6c35de0a05d704848140ce234f03167f431e8a07c6b0804c334509"}, + {Index: " 43 ", Address: "0x225268acc5e8Be5f1B69063EA6eaDFfE676Aaa6a", BlsPriKey: "6b0f74d270d4e337a95f46c4d39f1cf946bcc827ee9bedac8323437598caf63e", BlsPublicKey: "e25e4c8fc7ff6b1288310abff6a3ca25561ecbb775213e2eeb2ac7b49cc39c03683ab648a9e87e07e1880ee4768b3112"}, + {Index: " 44 ", Address: "0x242CBC66F0bd429ED47bD0b5c8164026A7994c4A", BlsPriKey: "036e784d4011c1c633da43d7ef8fc6d43e717151d333d74af1d953af1c8d7a2c", BlsPublicKey: "43bd09e29feb7d1b3f44436fb7635f380a3a9066642c90d00b3b751440256f6b3ac6a2a6fe7e49bd7371e6292ada5284"}, + {Index: " 45 ", Address: "0x2464c234faA87689B21058B52de677E726d15972", BlsPriKey: "78383d03589441c4d3729b76d21c34b59da25e32d4ca605bdc5d1b3b878cc448", BlsPublicKey: "9d09731efd6af85d1fe4865c1b34efa425e77922f58e574b8107053c7e12d8e69a97dbb5384d98260294109ee0b7748d"}, + {Index: " 46 ", Address: "0x247d239dEc14b34A3fD6635F14A10058e1b433Ab", BlsPriKey: "0155b109411fb272dc5abc9d9a53a01cc346b24c76d77d7ebf785464f805d843", BlsPublicKey: "69c687d8b5479806ba49e6819b0d76f4347d77dfa2ed7d293af80fce09b23bab9cb4901265a7a03de999aea099a47d11"}, + {Index: " 47 ", Address: "0x25ba1a086a4038307d34e8c085278b291db485CF", BlsPriKey: "7f92cbe43a42e6aacbba4b6403d54a262239c686863d2275464aa4c04daac312", BlsPublicKey: "c1f02c03e86a9b4eb3af21860ad4b646d7adcf66c0f7688887100edf4998cfbcdc81be4239e1bb3a07e50ee2ee8a0e99"}, + {Index: " 48 ", Address: "0x262401b4532963Ac25A742a9A7277d98E4E0ea63", BlsPriKey: "a5ad07baadb3e3af000cbdeae7e50ec53a9aca6d33158776a7cab38427011743", BlsPublicKey: "d62ed4da2fc8358ccde3ffa240c3a3d4361fbea1a7c32d58562164a5a7636f9198fc6b3c5fd1e1e7f5dfd74283041f07"}, + {Index: " 49 ", Address: "0x265CA0F26A8D899F0c25313164FBBb5344F973cf", BlsPriKey: "1e017f62210957e1d528224ac0d0fb73e47d17f90b0204ad377f396e44173971", BlsPublicKey: "358f906655475184762468d5c8adc98f8475588af4a0d90a23bc1903d55563325b8fdb789061e9d82801efc180c23892"}, + {Index: " 50 ", Address: "0x26Bb09E04a264AdB89B73389CBdcb48819CB2401", BlsPriKey: "f3889e2c2f2fab05a1135c3a2bd7a74b127458616e067a18ece0d8e8d002971a", BlsPublicKey: "b68d0fa0d67ea29f474b5b54309a294c0a69008c82f5ea2f5635218cd5f097d55421fe711624208cefec506d5b580415"}, + {Index: " 51 ", Address: "0x26a2F4BfbED55F9760E426cc0eeC91AE0Fe661e1", BlsPriKey: "cc8b2c27531215a9388415cde2380437b383bf9a059a27a90f31e9f571f3c83d", BlsPublicKey: "6971d780804fbce409b45ada505747cc49de688a9b899c145d28ae6d363cfbc37fbba71098efcab07851bcd1bc4bcd09"}, + {Index: " 52 ", Address: "0x27E556aA773505Fb57F07Aa32c1697D5FEc60C30", BlsPriKey: "43b19105bb960c5c872ba3892b2eafa2730e5eb5fcf05c249bef561eb7e2543c", BlsPublicKey: "a8873753c43afefcd3fea076b72032d747690ec20ce2cd252903aa4b01db1e52197a3dc3d197301085db1c6566117804"}, + {Index: " 53 ", Address: "0x28347C4F7f56898D30e0e4e2b96d3be8C25Eb5E0", BlsPriKey: "f1c039b7795e5cd1068966e314e76ccd7515e9098bf4436dab7ec5b26206f903", BlsPublicKey: "436b8ecb71d558ca03caf61d5dc402079d8b64767fb5864ac602d21cb0249bae6030664f5237e603a6b3fd0456b96d84"}, + {Index: " 54 ", Address: "0x2861caed9c29f8b9800394fD2AC47e1bAD1B68b7", BlsPriKey: "be60daa759d8cc98ab812515720dd0a47432fa8f7386200acff9fe43e1481823", BlsPublicKey: "3cafe67e98d3836a7b22c8ce5d4d8fdb40bf8c1a045c453d2f743995ace660b48ac09fcab35766269db04506a385e981"}, + {Index: " 55 ", Address: "0x28909d8Ac0bf925aA6f41f2cde4A4cD9f31B197a", BlsPriKey: "80e38bcd003a9a12990fa2d23766b299bcaa4a7cc5d108a71b71e139646fd731", BlsPublicKey: "f70f49948b5d58d3cb1e0c59e40976e1822d214f4981ca865c2cff0f1939f7d8502c1a6abae5be26b39d84d961796385"}, + {Index: " 56 ", Address: "0x299A24672cB79C61fE045e0aF9eBba4ce0A135ce", BlsPriKey: "775f4d0f3ebd22efa3f69b0a495d4e3b87e963b9165620e001dc00935f45dd21", BlsPublicKey: "4d03c65a51d44664a897f0bd1851340731c9186411e4276cc6aa7c9ad6852e3dbd0198d09fa8116fd621ec1b2cd1bc0b"}, + {Index: " 57 ", Address: "0x29fb0115A02F8F85d6fE0768f12e0F14Bcc9fB36", BlsPriKey: "5cc64dc633db8a761d8b0bac72392445f2536d22fdf2078b688e4e0f11b6fc36", BlsPublicKey: "dcc2add1b59dd7bc9d44c3d1305628fbccba7c799f56dbac8751082bccd481c1fb25aa77019ef233870efa63c08caf83"}, + {Index: " 58 ", Address: "0x2C2cBe9D862bf836ad96eB5074225d1a6f52ecD0", BlsPriKey: "cdd7a320620892dbe640c50f79e7f4f7e88ec7d404b77ddb414dba79ec522c38", BlsPublicKey: "f6969dfad21ee8df99e29f16db617384732d1d0bddf882eedc833b46245f3562287477deeafb3b900e300f0ffed0e513"}, + {Index: " 59 ", Address: "0x2DBaa0deCbaF557f8681bbDC23D6383FbC359B42", BlsPriKey: "ecad42e8558019d8cdcc5c268dae43ea73f096ae6a07b6f0f91fbe30e4547e08", BlsPublicKey: "d8ce60f8c062fa5e9efdc2e8d9b0c8cf8b802eade5c874eb5b633168aec5b749deee3e55549919502e771f92f7ed4a83"}, + {Index: " 60 ", Address: "0x2E258FeeC9Fad9d243B946FDB490c19434E78a26", BlsPriKey: "c79d77feafe263ed104c8a3dd3a78f4c24cb15f23bf378d78536b0fed2f81d11", BlsPublicKey: "373793fa30f12ac10aa6e0890b8f695e6934d2b8a7156338f11cd2811e5435bb6fe763dd9d329cebde9d995e124b960e"}, + {Index: " 61 ", Address: "0x2EA2a868EcD440C13da3e23ceD0b6654fF34dB89", BlsPriKey: "1542777b7786dbd7f7b3e183c6fd9c46c229149ebdd1cd92e770eb9e87ff2a08", BlsPublicKey: "b5c7bea09caa69e3ce3a3718518e3f50b0d2c32e740c69a321eda165d6854f6051c5c974196fc3485ff5f50827915880"}, + {Index: " 62 ", Address: "0x2F1a7882EF1c8634f46cb156DAE2bC2A35157Faa", BlsPriKey: "c3fbf51eeb25eeb0b04f4f2c8f33bb345065da277671a1a512107ccd3615af6e", BlsPublicKey: "03d86b178e72f8edeb81303036ff951f858cfff59eeb112d12835ad422065ab26bed25480102875cdc2825648a8d7887"}, + {Index: " 63 ", Address: "0x2a58E5ca4C6525d4F28Bf0A3AD34d8c1B6a99c09", BlsPriKey: "2410ba0deb3c06e2e5747d1ca39c1081b0dbe205a885f3e8278afd2a8641623a", BlsPublicKey: "a3a5716f45821011a90709490a4f2c9c80c1113b0b994c82bc7d91b90471ccaa776b5ed7203d3dcd328adaa75d0e3f19"}, + {Index: " 64 ", Address: "0x2b8C69Ba116ADaC2e2C40B5e8E6B05e39aE0Db50", BlsPriKey: "b80f5810a82b44678231abea9d0a7bd73839af5a6ebc17659b55e779d0bc3861", BlsPublicKey: "90c72ec8181bde35c9abaf69bd3f32da23a9100c6c9639d5276b93960d396f67be4561580ef165c374fe1958da3e5197"}, + {Index: " 65 ", Address: "0x2c2a172192a84aF1d37F8793c596b9b91b517ede", BlsPriKey: "0b1a993328a0a418ad16cc9573e365b674fcf0aed41f22050f4eb0a3f67fa90a", BlsPublicKey: "b2fa090ca6e41263c0d381b0b73636eb1d6ecb5972e7b0121503136f79ae85b3d82a4bf31dc03feedc44b32425382399"}, + {Index: " 66 ", Address: "0x2e9e70D46290A33F3F01251587AB09C84FCE7cb7", BlsPriKey: "e39fecadc883112bfdeddffbb9fbf4a611525951f0b3da348b8ce564a127c66d", BlsPublicKey: "00460f329a4d4c01b3daa0ce4f39c50487254cc414c96871f18fb804ba9baa72ee59ed82713b5b60ffde8ab6d7ae6f16"}, + {Index: " 67 ", Address: "0x2eE12a8225e5e811e11264D123c4E180F0797be7", BlsPriKey: "26ef3e9aa6318bedcc8e93eb7c3974334743defbb6bb003bc2a797028de71e0b", BlsPublicKey: "87106a52ab53f962dd35b3c60543475457c1faf002a1e3f610eb175f0d7c5d1b543402d55a23ad90a5f16aeefc010389"}, + {Index: " 68 ", Address: "0x3076E2D79053c964966204Fd1A0aF770ef2538D8", BlsPriKey: "06a94be38e03945e068741277da7b58c61a9d2a58df5f6076852dacef3b76207", BlsPublicKey: "ff438aca4ba83e86278469a42e1199f9ee62fa0d40a28093d2deea25cd8d77d2eb574834c0369a5d6f03408fb8cfb08b"}, + {Index: " 69 ", Address: "0x31335ed908287cdF7f9416cF748d145eE7913B34", BlsPriKey: "a580c831c2bcdca3306eb66d5cd20426f11d32bd1ce623b5236f3aa57c53b56b", BlsPublicKey: "fabcda8b7f1efac514365e4a66fa1b94968de3f7a322e548da53c2eb310eccfb3a7dea2286c44ab2852bd901a2550491"}, + {Index: " 70 ", Address: "0x319201A71220F5Da76B716A398D2398b6ed6a534", BlsPriKey: "7e9dccc87fa4d54a918bcd2a78be0a9fdc48fa56010758c500e31d4b15f6d54e", BlsPublicKey: "fe6f59c173f2dbd67dac8a18579df2e6d5cfb664ccd377cc40d28fcd36e2f6097551831b27d7bfaefb93df059ec71d8c"}, + {Index: " 71 ", Address: "0x32E8D97857240CeA72f543460dbd17E5C648D738", BlsPriKey: "360abec0172e46ccdf42bc14101ac9a08502d6eb6095f55d5a7f0e17c3191634", BlsPublicKey: "7e65e8558affa22fb744d6c18149dd009d3a022ac96ece3bfe829b97566cbafc650451c29bcaa739ca2e2cc8e9e30492"}, + {Index: " 72 ", Address: "0x3309c38aC38b8Ab3B0917b75b4434c95879b60CB", BlsPriKey: "19e8982b559fcb011d5ea76d5f778fdff8dd5e9f41990faacdeabeb1c369d633", BlsPublicKey: "ce8243acbe5c16a6ff9db1b6fbd1ccc136c1c27661307b877bf66642998d68cafea2678869d568934ddaad20e1bd1c82"}, + {Index: " 73 ", Address: "0x33F8248328601d0A13DE54f580b5fC1D92bf0a09", BlsPriKey: "a8ff62a867711ea4de0785b5a2cc2759b35d6866883a963f2d5cb7cde1240f4a", BlsPublicKey: "397e17f6db409785a7eda2c76d67a78f7f33f4844a8654234babfe5847547991f04d20a8786bef5d9113131a497dd088"}, + {Index: " 74 ", Address: "0x340Eb83bAA2B555A97E8E705aa857D13CAe0C574", BlsPriKey: "e60669bf7362a0f9f0078479b50e387a7d8f29a9329f3b7cbd31636156fc4350", BlsPublicKey: "35464342850134c750cdf7818f8518a1d79ee29a32a95f1dd30868eef523bb1ccd24205c4e23575d6203a44310f9b78e"}, + {Index: " 75 ", Address: "0x34788e58AB673D69b523c8CE62341a49d7AB0dd4", BlsPriKey: "a9d25aff30f4fe30af2cba36af64cb05983203fbfa0c1bbb9af175524a03a75f", BlsPublicKey: "a5cc6dc84d97e6c7ece059cfca8fae08c588ada5f2756e28bcef836dd86763630fe93d42c11c84aaf73bd5f78d68a519"}, + {Index: " 76 ", Address: "0x347be45F656bB0240f54A78210623A7fc64C347E", BlsPriKey: "b2529f4bf082b5961e8f92e5e8ea5d601985e780beff1d80bfb646367b294b2b", BlsPublicKey: "83fc4e27318c80cd9d6156e1a248ea3c4b101dc99282077501fa3f0248bac1c6e63e75e005641cff3ea0299da093678e"}, + {Index: " 77 ", Address: "0x34dad558F746FB3ac3cE2f52D78A4299EE8B5cc1", BlsPriKey: "7d5c691e785de7a39cb66112cf08c7328d108d485d459ad18e6a03722e85cf05", BlsPublicKey: "3f743a133be4ac6009e33131439d7ed4db8906dd2a73e570b34d138df5ad35121922c9ace8ea934ab773023e44123116"}, + {Index: " 78 ", Address: "0x358f5cAd732462f4336c2fd1d1C2D2ef8a993a48", BlsPriKey: "95389b135940d578bc22673f965435ad511eeaddbc83ce0756c46137e1ea5632", BlsPublicKey: "62030d4c967ec54c02846f3eb2d0bf9315045e829bda7f1dcd8f641aea766de7836c51024714ff0143775f147e005e04"}, + {Index: " 79 ", Address: "0x360C6d41Bbb26C2008365871dB41F7f4F038aed5", BlsPriKey: "b8da8b8201f1b7aec7471a9cbf2df123a37acd145d1f40df4ee1eb1ee3c6002b", BlsPublicKey: "a34ffd81f3e666276c08bd6a2a0a241cea3e028c120651159e0a7476e8d3f632ca99cc17b314f508ea24626084a9a606"}, + {Index: " 80 ", Address: "0x363A67Ed8D83b74f132364c07D95058cfBba4068", BlsPriKey: "89baaea9eea71b06259156fa7da7539331539c42c1bd0aa8cc22144dbbb94e3a", BlsPublicKey: "f2b32ea947b3da8276b61df3ba7379aff7a1c88271cd9ea9ee5144e70b519ef9ab58a5aecf6eddcd4d6dd419bc046f98"}, + {Index: " 81 ", Address: "0x3712a9599454A3510C4Bf0927DB91333D7fe72bf", BlsPriKey: "171de1881cdb39926ecde2b6b0bbc652656904be1186963b8c0618aec5e8aa06", BlsPublicKey: "28d32ff81b2b2f7d16be0740839c085a79bf73be2e229321158bc7d3af1b94dfc4c14d767957c499e5d9ec218d404319"}, + {Index: " 82 ", Address: "0x374beF68Fb58142Ca63b3Ed86C3132E008eC9957", BlsPriKey: "3a4cc149c8b757dfceb0fbef00b616843ad68d5b24ff59f95ff4cf2c959e8037", BlsPublicKey: "7f10f377233f1e88f7c4a02d67e741865e14fc33d4267520afca7b4c459abf1477579ae815a05ecef80a63f7436d5f8f"}, + {Index: " 83 ", Address: "0x37731F1Ec1826b278CA47EF87a4177cc5931Db67", BlsPriKey: "62ded039ad53de22a275e2da572064b160c105c111e47d677dd8bfd42c6d9b3a", BlsPublicKey: "4f92bd2d17d65426f1058345982bc3082f70e2b3775e7f7bf9d53e807966fdcd0090ca63a0a8924535eae62a9e18ae0b"}, + {Index: " 84 ", Address: "0x377dc894E403D4e099851038c4Aa40D67fdd64Ca", BlsPriKey: "fdf1a21336b30807e0e52ed2862cd398e7f131332557f7d22b37724f6f700b63", BlsPublicKey: "93365127458a5aa1c99d0f82e61f4e9248bf6ba82bbc9222f0f0fb7a240c43ee1f4aa17b1509639df411ef0b7510d38a"}, + {Index: " 85 ", Address: "0x379c7e2c06932A064D25dd2B938974a31AFFAe4D", BlsPriKey: "e8dae2866983d99869b4765a6b2e9a8f9d2476885917f46fd70469ccb803af07", BlsPublicKey: "e9ce5bd521d955f431a42d8de146336ccc4c725011dda7c39fbb62f48863d179e2a8f83e1d0b96fc224d2c77fd83a50e"}, + {Index: " 86 ", Address: "0x39248D6c63c76BC3C8dD4f8C910C9cb1098A0019", BlsPriKey: "98f4db326c0b619651a9130880fc7bccee293901cbb8fc7637df98090b0aaf68", BlsPublicKey: "ea4126573bd4de5859bdf03331034b71a8bfb83bf97afebe8f7bab1039d53541ef0c35150eb9770d39a564fe79fc0b87"}, + {Index: " 87 ", Address: "0x39d1F7820013fE09056b2187359Ad03891C7DB78", BlsPriKey: "32dd83bb20b27c66182035d4cce1bae1902ca145d47ab24128441b0288f6c605", BlsPublicKey: "877ca8e32b68398f0ba33951eaa17994dc90fb0bda0b5b4ead0822d1165c220850a4fd9eb8d6daacf84cdbac8cc3148d"}, + {Index: " 88 ", Address: "0x3D053cDBf1B9A8D5AeDDB2F5fA1E414E2E1b3996", BlsPriKey: "d58e62628ca9952698791ec711a1a30e25f5ea4a6c3a5285de441807892a2914", BlsPublicKey: "4f4a9edfdbb629c16f4c1fa75d6187b29ad29af94526c7894c8f8632ebc550bdac1522258adfedaf0702de3e75381e15"}, + {Index: " 89 ", Address: "0x3FebCCaB09ECe4ef6f6a2bEA73A898B324976E74", BlsPriKey: "ce78925f42db2550e6cbd9d802ba842a296f04fcad53a7f5f2ba0966e0ae532f", BlsPublicKey: "6e48cb4c103ee76405afbc28d5a87e2bf77f8c257f823a7c022d49b0504caa519a8165d3896153c5f65b17e2391c0204"}, + {Index: " 90 ", Address: "0x3c8FC1035Dcb6e6106C15a901C4775035b3dA784", BlsPriKey: "16a56d0c45353f64c387c6357b9c84bec598cc07fb8e3f315734db8bb1de234e", BlsPublicKey: "9a488cbabeb06163aace993648fc7cfd638eef0e34738fb27b0a0096b5e0d6d545a16542acdfbd9bcc7e6c91d7ce1d98"}, + {Index: " 91 ", Address: "0x3d1f908D73dDd221E06Ed234B65C482CA45a4DF0", BlsPriKey: "3773287ac6e5d8d9d137f00f4a1809341d35c25839e0d1769d1f5912c332612d", BlsPublicKey: "10562d410be6dfe7f844c582923c103d8a03c8525fed1bda3f641d448a0df932ef8d0645c8e66b0894e21c42b95cf400"}, + {Index: " 92 ", Address: "0x3d693307B4Fb93A8f18eB7407Ba667fAA3071acC", BlsPriKey: "8695759a8cb61c6fa17663032412c26f8c9445aee9f374fe1b9713117ade7865", BlsPublicKey: "45f06816843dcf49a9dc19f99f6b3393093bd386dd205e3b01edcd4b2e87f5a81e309a1cb03564bbfed645458c5bcd04"}, + {Index: " 93 ", Address: "0x3dEd77a2008C1a37A4A8dBa95A3f271fA9FE612A", BlsPriKey: "2933d5643378ef0ba8aee94f976ae76cc08cf182738888ee1c489f4fdc8e5a04", BlsPublicKey: "78376f203187ac443629eb6f754c29fd1684cd347ec9545c7917ff5612a8e665ddd68214483a64c27eecc14e3e7e2d96"}, + {Index: " 94 ", Address: "0x4028C0fEE197D2e0d2Cd2C69860498a712cbB8E2", BlsPriKey: "34e47d12f438ba91e41666c8e4aa227817c79d17060a740f8224847b9948a34a", BlsPublicKey: "ef0eed013d65a789f35bf13a463f2927d457d1ece317b70591a58f73f17f67b86e2262a1ab5ba2899e200c4f09e91704"}, + {Index: " 95 ", Address: "0x41D5410D1ac8Ed178c2494BEdD696E759052A428", BlsPriKey: "fbd218940c6d62926c488bb4a6e389ac735b3386b7fb4c0c36e5672abfeadb73", BlsPublicKey: "d0d26883c8ee9919b6ee49f4fa602c17e8b8ca07e89a93cc9eca8d9135a893aaf38250fdf56df218caea770c2748f80e"}, + {Index: " 96 ", Address: "0x41EbA30f94338B69F7dCdCC51C2e5557fe8Fb2e8", BlsPriKey: "d552aa321337894cb21dd0a4679f08c9dc2c28ae8968bd75d8f7e6f097baf85b", BlsPublicKey: "8cd7e05b8a1dbd8b49763deebd4f090c206a7136b85f737047e7e5fc92d3f0c46dbf4c759d08cdcdfb4d4608553c5e0f"}, + {Index: " 97 ", Address: "0x4204324E99c2D24DEFb4Ec92c04F91f9Ab1a4b3D", BlsPriKey: "2b76e3c16a2e5ac28059a97bdc0038be74b7e31d62cd750e167ff8dbf4910625", BlsPublicKey: "b857b0f1410c239a5651ce14ca5c82a5c525a72c4741a4c9ab95ecd0e31d50c2fa82b3288999304d1c362add08118005"}, + {Index: " 98 ", Address: "0x421F5E2b63530911aeB2e0C047E970f92cA5BFFe", BlsPriKey: "aa701b6ff07c196c5f95ddef8c49f578365822a240b78f1b5901c355d1dd3e6e", BlsPublicKey: "2ac24ef025f183a1a4654c691eb847777fe6138e771609a258bf5f93ab9e56ef7851173aa8a4d4a193b06fd3f483ce18"}, + {Index: " 99 ", Address: "0x4229a06ca14dECaCc667ea3752Ec9F6cf6883E5D", BlsPriKey: "4ff55d2607bbab7f0b7c7b926b41a64a704b287ee87d2eee0138eb576b53e95e", BlsPublicKey: "db2a4ad787839776ac4439d8e001e1bd50f2662a2dc93d4bbf423ae90a6ab8a83ff091950a83d2a4d7aea70a482fd312"}, + {Index: " 100 ", Address: "0x4325bC92bA7e8D83dFCD3748998835deA565a619", BlsPriKey: "485799c51877d6545748afd681abc097dd6ffbfdefa5ca69e284127acfc8953d", BlsPublicKey: "54599f487546cb30db2290b9ef5ed17a7b65c91cd391f1df5ad38d3493a3b494cb5f3af232489c3d419f496ddb48cb86"}, + {Index: " 101 ", Address: "0x44456966A18d5aD69b6E7a088289751a49bf40AB", BlsPriKey: "2111f88712ce8ea23e724a09cc394968cfaf8c2416cf93cd1a638bae2c2c070d", BlsPublicKey: "b4331e5c0e9f75781255b4e11894ae8f8c38031d5e4c8def72c9b0ac21a33facf1c117676819a50a5889da51eec68f84"}, + {Index: " 102 ", Address: "0x446B633889513A21a1d27063ADcd1B062c277D76", BlsPriKey: "370b986079a75fdef94d5a95e12cc2773af467b47b50febbd4ed0b070ff84b58", BlsPublicKey: "cc515092931c5a110e898d837841fd3bc6748b098daef25aa29bfa1767cd33e48eedcc7bd4bb8293e844e92005be668f"}, + {Index: " 103 ", Address: "0x4478E05FdBB69b90fd5D2da08182e62356FdF7D4", BlsPriKey: "504ad61535bdba92590da64d4e7ab6ae78df225547926e407070c1b2277bb036", BlsPublicKey: "7d397055a28e259e09eeea630cb82385aabfac852aad66fdc8cca0c1f4bace61c68624d49d67357671f03b67b1cd7b11"}, + {Index: " 104 ", Address: "0x4499471831Bb521c02ccbf144882ED910D0BfF12", BlsPriKey: "ef95ea3be04cea4f6e34a253df5fd3e5978cc24e22c25686ddd2fa3e0c4e625e", BlsPublicKey: "bbf9e7a3a092d4482cdd533af5a9e54fbaf6efd91b1870d679e658a1256e082a8fc27ba6981e2592abc38a13cc47f181"}, + {Index: " 105 ", Address: "0x44D7732cE7f12Df848E0B21d111f74a618f8a43e", BlsPriKey: "d7ff7def8e785136aedd7950542b87eeabf2a5307b5489159c86a9704a78c82f", BlsPublicKey: "5d584ad0e8d0c4152d049f7504f71535be625c6189a48c5b45084c508e0c4996ebd6d887ab3b391924f817c93d5e3e95"}, + {Index: " 106 ", Address: "0x453aa59A3227bf616a95b1E373A02b6a52Fb375b", BlsPriKey: "51a98d91590f1aa48302972e2a443330fd58c42f3afef8c0a1d108bd12de9b34", BlsPublicKey: "c3a963dd70b98684a29af8bc14747a7653fe8ca96146c9f3a083e29de693b838879225a4138125e3caf7f0de061baa10"}, + {Index: " 107 ", Address: "0x45FdDE03B486e2c0C4bBb89F398241A3755D5D11", BlsPriKey: "02f6ba3f90b9133fdd42dead23fc4623dd401717a1f105f94717ed9fc5215f5c", BlsPublicKey: "734b5bea5f43877496ea0ef75d348f773f18225e253124dd163983f07f53d19bd019c756cb9d594fceee6135c59f3c94"}, + {Index: " 108 ", Address: "0x45aee6EFF98397835640638bA345E0EB31827AD0", BlsPriKey: "9655f209face791015d54bcd1862481fef92e3d43878d6cdd6d5c2293ef79f44", BlsPublicKey: "83b805b0e0db1fed96f6e19f89104e3d30c6a2472c58ff04f61c586a37d958ba78c39fde0aa92fd901e396c14d0d8b11"}, + {Index: " 109 ", Address: "0x46ccCF8882c4703350A9aD72cA0Ae08730d148b8", BlsPriKey: "15a9c70dead44df5fa6edd81ee0a5f1377cfde77a1f2c54d73cec8e9c7cb693c", BlsPublicKey: "a0f50efc6a28bdb3f00192597dd6da6f839e1c5301135fbb24d08c3e8329f8e3d72d344f4cbcc1215d6f36bf26ca9e86"}, + {Index: " 110 ", Address: "0x4762F1BDcD9B3B4b14293ee97d29A68F328Ef4EC", BlsPriKey: "a044fcbd1b7a7b7bba6699457305494a5bba0567e97d95a69c85b294eaba646c", BlsPublicKey: "4f9d738581dff682893bf7dd0845ef3b2215c19eedfdc85bfae08ccfddf8078a2e3d1d8e987fcd53d2f7d53d52e1cd14"}, + {Index: " 111 ", Address: "0x477c8504Eed8fa3914e53285150CE0A87c87C696", BlsPriKey: "507349bb3f44e9a20dd6555b8d7bc7f95c26b372641fce31502850005d7eb202", BlsPublicKey: "ef0ab1e660e947d5cfd133d91d763a98db745c40e715c94f376652b95f3bebe3216db66274dd9b088e319ddbd6fb6201"}, + {Index: " 112 ", Address: "0x4851E31eB74c400d906d98da8aD8BAC2A9dB3328", BlsPriKey: "e0984f407e32fa7d060dbd7ea2b9baf8a494ab435f797f08f4892a2bf5b34a0f", BlsPublicKey: "2d374da53e46991444c94887aa162a547cc4fa58cfebdcff44ffa4c1c940dc78ca4bb8e041104b054412231d49121c14"}, + {Index: " 113 ", Address: "0x49047Cd6Bb970E711a198DF1186aeb1E6E645EB5", BlsPriKey: "4cf7b3d6f3c516061e8e17b6290f4b8fe58e822d4077f9f5d718a5c3e8bab526", BlsPublicKey: "af9fdf599be8337a88d3c96dc91f33a8856e30bf7a88a04bd49eea8c0ade4582a4e6e845caf60b51b6431a3e11dd470b"}, + {Index: " 114 ", Address: "0x4B4f226886dD72d30B27197593bC6313d228e115", BlsPriKey: "1685239934f53fb3aa8585493b03525af5e1083927f59e86a649ae383d02191b", BlsPublicKey: "3a5d19459a1f5f46d6904d639ec511bd4974aa6540fa86922a3c5ab045e62bc70072d3a23e43881db5f1c6ed2256ff05"}, + {Index: " 115 ", Address: "0x4B8C78E300D5d8DBc80Aadc03d2a899521fc4418", BlsPriKey: "941481e67ca7c764d2c077eaaa014b457ae247757f5d863b121e884701e10e30", BlsPublicKey: "260a73445d98456ff82c1e1baa8173cb666b0f1465ecf1616decaa61e15450823ecb115b53f88cfbc27da697478d9916"}, + {Index: " 116 ", Address: "0x4D30F9107a8dF1a89E040C693A7d63F65aA6D289", BlsPriKey: "169b52af471949aa81f53b43bbf4e9d84268f248a92c2eb7760437fb0e36e956", BlsPublicKey: "62f8ad555ea722cd4015d8f7f6ab395626881d22bcc15a62bb89b08a8997326d29f56684fbffc8161d06e989f0a93590"}, + {Index: " 117 ", Address: "0x4D9EAF51339cC05a8D01f19B3D960b6A67db62BB", BlsPriKey: "2e4eccd13f0d703e02cbde24e6b347a565ad4ac3f9ac7a9a293e1560687c0d45", BlsPublicKey: "a76117c2facb84bac71b36d0fc0f2c83a9e8bcc4ad8d3721170834edaee12f1d5da1b0ab26b4dc92f440a7f4478df691"}, + {Index: " 118 ", Address: "0x4Da55B8bf9c484155ff90F18CD858B9b4Ba9F456", BlsPriKey: "ad973f8c1436d1a9f603f24e551e84609f55ab89391ee74fcf564707ee8ec33e", BlsPublicKey: "a23f996eab538c65c3995e0337cdc27c2e9754adf95caa28e2f71ae0a583ef4034e389ea7eb0d11289553bfa9fbf5d85"}, + {Index: " 119 ", Address: "0x4F39740C7479d45E9D89bAf57A0773FdC03b5773", BlsPriKey: "7ae27163e7d27eaac107fdbc509fef756130eb559ba60528d23986f97d824630", BlsPublicKey: "376055d100391cd770cf9c96b65abbafd27d41182086afa3ecbd14fe8a7d70c16839b99673645930ca452658b85ffc8c"}, + {Index: " 120 ", Address: "0x4af845890077f56e154A1D725CF76A707a4C325a", BlsPriKey: "1834fa58057fa8dd15403876d95b9e28436513751ffa4851917bc14ef168d158", BlsPublicKey: "55d43e9bc2713b4af28d68ad611d98691b6fdb9d15c8aab80c61bfc333c24b9cdd33d57421381a24b9550aa7d30a1888"}, + {Index: " 121 ", Address: "0x4ff4cA3C6725e57fEEb23c5B8a05e71bdFfd7c67", BlsPriKey: "389e563834fb16d6db37774eccd4eb9a1ac744271dc0ddfac49f17919fee763c", BlsPublicKey: "abbe9f6b1fd1fba3cd9ee4383061d01275ac57978ab23b0449110fcdbe99f3625572bf1533cc855be968adc41462f100"}, + {Index: " 122 ", Address: "0x503C240fC52b4556Fd990beBC2ee07f17a1D9fb6", BlsPriKey: "4c7457c1fa08df5bbb1a0cf3025579b1f77c641a4f791fb63dd6e606275f7355", BlsPublicKey: "1d9e86cad9e6e8f3219ad2c5d10d56df52a0dda304fc4072d72364741a89de46424d521f49ce563f1892fb46f65e3880"}, + {Index: " 123 ", Address: "0x5042aa9eBb9701942391f975A57B5DAcbB8b3678", BlsPriKey: "0dc74058a27dd6a931db1bb1ac69d9f788905cb671dbfb7846a992ff82fd5841", BlsPublicKey: "fb7f37a560a758c893b04fc0bf048b4dd0b3e4a1887393728fc6251f459a48633e3d7b49835423d98603e13c2dcc1102"}, + {Index: " 124 ", Address: "0x509E55f51e887A42A38a2C43A373B84779d9C408", BlsPriKey: "d4e0fe3c557ce18db485d8a404e32bcfe0a762e0c3712c80a932ab8012545e21", BlsPublicKey: "deee74e806a7970a19db1ed650ca1ac798564a222622957b0baf9b12c9a003fbd6b4708329c93c21c33d2612e1838600"}, + {Index: " 125 ", Address: "0x50eB59e5D69F0151d45aF7De42eb06A566D00922", BlsPriKey: "b1c66b01bbf41faa688e998903df494fe2db0bca5e00fb64f97ecf8b48da7e35", BlsPublicKey: "5dddaab41f3e0a93da03e6758b8eab7e2440ea84555889c32e31e5a10c116b70218203a158dd8988bbe95672b435c101"}, + {Index: " 126 ", Address: "0x513B35302F1DC54A194E58a5e5D1F4fF73b1240D", BlsPriKey: "b54ed87e8e6044ba683fc4c19ce1c05af7d49fdab2e9990b1f1d0827adc69519", BlsPublicKey: "e919e4385e3fcb9ca692940b6a242763edaae8a212518ac8b266868f00dbabe04c463c56f15cfe5a68185c2f1df94f98"}, + {Index: " 127 ", Address: "0x51Cef58fb50f46baddC6c9b712c1B0dBA2835296", BlsPriKey: "15dce77a2bfb9ad3122318e123c4fc4b3bac83744b742bbf8882c7c2d77d0770", BlsPublicKey: "49db5f7a5e46d500511345e372c6f4fcd3cb484083e3bbb2670b6a7f33f765a98606ae7e470f57039a0d2c7119db6a98"}, + {Index: " 128 ", Address: "0x51f82DFC182b1c08a11bDC159EDE6e8219Ff8D7d", BlsPriKey: "d33767dd3802b9754b8044caa067ae88d1742d519fdf91ffbf68a1378f41a369", BlsPublicKey: "69073a348c80cfe70d6d163c126b2d6206522aad6ea00da0ffc72084471da5d11fea737868a2a02d9d40d705096b240b"}, + {Index: " 129 ", Address: "0x5325ADa44428d5b2Dedf7aE41E5Abe129B8433BA", BlsPriKey: "3145a3ca648dae41009201cd367c5e107ac2518c7edcd431812362ad30c82e21", BlsPublicKey: "0710b93a4dbfd011c8e5c0d3a3a01e996e89d4142836fb012f20b03e8a95e28431a0a7f71bf8029a480fb9a060b45897"}, + {Index: " 130 ", Address: "0x53e8B34C45193abf3eb290973eAB78f9f0af64dC", BlsPriKey: "95edcf0e651283bf480850545f7faa1cf0adf3deabff3a5b9918630f6e60823d", BlsPublicKey: "c4ffbbeafdc1b0e2de2abff826dee820028d198fbdf74661532ac4816d530167d33c7e2c47d87e6d8b014563e6fb640d"}, + {Index: " 131 ", Address: "0x54030397F9EEe4e9294c5E6E161510109C3727d9", BlsPriKey: "9ad3d658e6252aa3b5d44edfc9fae6d8e03ac69f5a2ea1355e17e012201be533", BlsPublicKey: "72a35b184c3f20504cb11ff0f18d7805d882c5669851d38f1c74a2ae4f872cd221700225ebdb91ba123d3efa4c8eb794"}, + {Index: " 132 ", Address: "0x545F361048B1EEA955Af00Bd86618F91FFA04CeD", BlsPriKey: "34ad1e8521283bff6f9e0360bf3f9f625779351fd68b9a2c4cf80eeb67739517", BlsPublicKey: "08c098f0c14c3a6b3e6a72e20f03b90a3c8e5072ae23e90d3a8f960a2f8b053c2c8763cdf343a1a4c42b60cea1580388"}, + {Index: " 133 ", Address: "0x557dD1c2C39e8Ebd7d46af5dDf8e3F450108C44A", BlsPriKey: "5cfce0c36c23eb91d4d955d823f35e913e18704fc5851022269e28192957b125", BlsPublicKey: "fe07e332ae97f22917e2d2dfed36a3f6ef45d3d3c80e7313e4a0e112158c6fb0195821477cc3649ba951b3d9daa4900c"}, + {Index: " 134 ", Address: "0x5672f21553783d16AE7A7901A4461adBf6C09c56", BlsPriKey: "ed62774abedc682a04d166fece7cc22c87bfd68615fd45bdd66aa14e598bd41d", BlsPublicKey: "c0ea3402826658dd193389312f50eabb81f2ee4f11cdbcb8889c4b9cc4676bab9f9bdcb9c6e740ea74c474ff05267282"}, + {Index: " 135 ", Address: "0x596907B8b2E11e2EBC6f6c8011Ad379e1b83F669", BlsPriKey: "13f8426d081c3c8f988bb57c302d1f3cb6bd14cb2260516ba65b84adbd027327", BlsPublicKey: "6b0f99ea5748f4bded677207871bb18c0a3f31137ab4a4f11b11455d1f8c6e681698772271fc8558e9a6894a88213819"}, + {Index: " 136 ", Address: "0x5A9B1A7b7c889C359e8D52c08e1566C10Fa8B5a9", BlsPriKey: "e99d589dc065f51402683dd8c4abd40fbd7d15bc5e3732c77bd6723901d2204a", BlsPublicKey: "3be9dcefa857fff82e36b681050ea68aa4b5b8434278cc7784192f80c4cd0848e2e6a79963db99d297794618f890c095"}, + {Index: " 137 ", Address: "0x5B266C47A82c4a849a70a1F96760fC1025784E7D", BlsPriKey: "4d617b6f8c01e714cf98fbec540de10eaf4acf99f55ad7a784bea63fe2f8af4f", BlsPublicKey: "7457ec126327353abd0319cd2b5229b3c316718f21d597c4c2c4ae7946941312ced5ca53a459099171119c154c136613"}, + {Index: " 138 ", Address: "0x5Cb5E2Bb095d2DD25C9b2887851f8D9E7b733e75", BlsPriKey: "f2d82f2f202aded3aac05660621f76c038afb1b561e27103fc9965ece6b01f58", BlsPublicKey: "108c6daf0b186f086aa9545d2fd0b463c048627d0da347f1776dc134bd2b4aab6c73f68a0ea69a864b3454fad596ca92"}, + {Index: " 139 ", Address: "0x5Cc69576F059260426e29bDccaf22711ee9F2730", BlsPriKey: "1451fd7e7af3e367b1965851a3fac8ecc269297b97b651eeda64eaa2a1f26726", BlsPublicKey: "eb2925d08a11ca706c8aa76da6d4985495623a677c866821821329f3cde724e032953042a7de5b0fc57106798e97690d"}, + {Index: " 140 ", Address: "0x5F8a55259e904D8bECa6b19C728Bc933c6ab692C", BlsPriKey: "9440c692b92dbc511f910e49897d3f94c523c2579acca2ef4239c68c01c36420", BlsPublicKey: "13a7b78131fb06153b158111cf16549facad6a8a36208d9cbc809d4db22d40b4bccb1231395a5a0090b386ddfcc94795"}, + {Index: " 141 ", Address: "0x5aE8A1e341D5aBF60F639E6ed878f234Ccdf03D9", BlsPriKey: "210f1827ebf42d2b691827c6fbf2bee5b1781f29543870f55e5a8d306332f837", BlsPublicKey: "299d56f61103e2f8891ad6edb6a3754e371917562b81bd1149258590ddf14b65fc63d01f736ed3225025187788d8d392"}, + {Index: " 142 ", Address: "0x5b28EFBa128480AEF7c07536Cd5719eF32346ec3", BlsPriKey: "d3b765460eb90acedb4c091cad218f386276d4082fa86454be97e63de6b24530", BlsPublicKey: "3d303e0d4a14b5bc9bdb7cec22f6e374d93f128ebae129617ca5786b9f8bf6dea98b0cc6452b61e2721163a03dc22e15"}, + {Index: " 143 ", Address: "0x5b780aA2EB82a7D3a2643360e69060ea12aE8d40", BlsPriKey: "eb476961cd8d7c883db6ddb23f7f6c2871d05d36c48d2115da9c7dd051948106", BlsPublicKey: "40f10d3759d07d6c07ae135e385ce9227b8987b9df6d1367ce3e5ad7253c3a21ee624568bd4a8d767fb8b7eec17c5082"}, + {Index: " 144 ", Address: "0x5d64C1e6389f4D15fA1cc02e43F8Cd2AeCE89DD7", BlsPriKey: "b3fd13f17e12868b2a2f92fccd5979b63e167df0776899c74bfb0411878e4c44", BlsPublicKey: "1c9ff74ac079b208aee770e01027f68247225042ca7fddfab6a2593029a717642d34df4bbfd52388a25a1aba94b0b513"}, + {Index: " 145 ", Address: "0x5fbB8cF80Fb9C582Cf77d8a307378Edaf3855fD5", BlsPriKey: "994111f63f0afa38877fb19f8ab203b5348fa3268e4687e73973b07000627920", BlsPublicKey: "e58049e5201a7341cf962250aef6e0521dfb26bad33c75f9d0785c87a86fd48c277658481dcae803754e5a37cba14f11"}, + {Index: " 146 ", Address: "0x617AA0d05af99A91D7263D92F35e32909322E5EE", BlsPriKey: "b54adb8d48a0b167ca70bd935519abcfaebc1e6b51393f073c6477c0f7929a2c", BlsPublicKey: "730e961642da0a58622a3448d32f5641dddf533cb6dfeb95d9dd424935dba491f08117575d740437732ca9412952ca01"}, + {Index: " 147 ", Address: "0x621bdbD1089b4297D857aA1289EeF311baF3f2B7", BlsPriKey: "c157e1d888cb12b51b1419b0d7bf5e0e97ffa9f6ffb77b191a884b5683d1e148", BlsPublicKey: "ccfbcd22a1edf4d18048e89efb6939459a386b9891d753f1673b335a342c236bbb1331526254aa64ab4ee8ee25069e91"}, + {Index: " 148 ", Address: "0x631eF9cA4Cd625e0610e9808674284028Ad30662", BlsPriKey: "4773adb16b85053be1ab8eccd32576538f64f5cbf13bf9d0bc9f4ce36e841a35", BlsPublicKey: "f33f4a94808bdf880c4f6d086f0a5e36b781f7d9ad52b23749686cad16f877d94b3b91f7f12bb3e8f4f05778681a0a0d"}, + {Index: " 149 ", Address: "0x65324a6539e78e476AA1e08396bcA1a141C93938", BlsPriKey: "94da2fd1612b945f7ce01955085d6f7038bb0de0353aec1cba21e4cc62240936", BlsPublicKey: "c013e4eb4be9b2571401726e9494bbb9ab0859154270604ff3b40c5fae5146c2fe08f4b54b8dba9eb93f65c140d5698d"}, + {Index: " 150 ", Address: "0x6574854fEB55F3c04D24d34EB9AB6fda880EBA77", BlsPriKey: "fc2e56018889f4cb13112af31a60b5d1f04a1699a7200b3b6e8048bcd047aa56", BlsPublicKey: "76704bdfdfcece5b2021811d7926edc6b8dda2bd2dac8d336cd4153809d4e903b6fc1aa48749e368af59e7c641c49d0f"}, + {Index: " 151 ", Address: "0x6746713E1E01F22809453a9A74669eC3f9B888fe", BlsPriKey: "68470f60e743a11e6bf6f6126376d3d649ae3285ec5078c64f3caeb45284633d", BlsPublicKey: "c371349637686e852409c76c00d14dccf40cfa2779c136006f1ac90bd5202c16928def55326362a125c6a9c6a7ed2005"}, + {Index: " 152 ", Address: "0x695F372E04A79CCed0857cCB0364CC229b944C8C", BlsPriKey: "45d56d646bd37a955704e085b5e5b8346822a49486212d9499709eac8cff1b20", BlsPublicKey: "39ee9dc51357ec0d284e28e620b2fae04a810cf097e5d0dd5696a2590f4fe37a94027695bb9e544322e3aad4042f738e"}, + {Index: " 153 ", Address: "0x69Ccd21Fe984E812Eb22023beA809E93707C940f", BlsPriKey: "7173aef583a4a18a96b69f5b875b6079493e591790df15deffb499bb8b902b3a", BlsPublicKey: "44fdbdfb94d0e89f9b0ec0c89438378fa3f6fc4ce005535a8561d9eb2ad7a45fe9d3ecbf8a2fb23e90cdbe309b896b0b"}, + {Index: " 154 ", Address: "0x6BBa4A8e29dD2C491b493dB83F648ec822B2a73d", BlsPriKey: "d0a56572b6e5780470dc20cff364502d84c26d5414d267e9d8eb6b82d8ac6436", BlsPublicKey: "7c883b5e6399cb72470825707b8b46064abe9213121a4e719824c504d190f83d52127f8dcff9a5e077c6ae95a1be520e"}, + {Index: " 155 ", Address: "0x6D24Ac5F7702c552dE9F2d72d4e0F6F01f786f5f", BlsPriKey: "13317e3d7d40d51370a516e171afbe0bafe6e646a748d6ac6f799f61f2c16b42", BlsPublicKey: "65e0b1acf0eb0be04c6602470a69998cbf3a8b1b2a82ce708bd88bc726e13e703139147911a2bcb2c8c9edee67734697"}, + {Index: " 156 ", Address: "0x6E1401fe11502f367C5f789a8379e33Db3a934F8", BlsPriKey: "78c2e039f14a60fe400a1be33362302463aca4094f2dbc6b10181a3e507bc55e", BlsPublicKey: "00af6f1d1f1e907505065e00360f8ba34262fcf690c7a06408cb8e5d6458ea7d5c4373a4385a348388a6c67777b6a58c"}, + {Index: " 157 ", Address: "0x6EeB2b78CF742745ddf3Ddc88C3519665ed1b4Ef", BlsPriKey: "648627a389be8a784f9fcda2b4991cd88e08428d77a49a67368dcf0e9bf6da65", BlsPublicKey: "327d6f4c190b381fefbf5addc6c4225bd207140eb9445b3709764eeb236f719d8f407a6b8923fb082667ad27af919a86"}, + {Index: " 158 ", Address: "0x6F3E52d859Cc49c095ea1336D55098670a3a6b3E", BlsPriKey: "f08e2d684d763a9391d7b24c84d15d213fc1b85091aa707728c80ccd8baeb155", BlsPublicKey: "848e6c6fbbcdd737c73cbc09490baa23d88f7565487bb5db538ae6660a68e40793a3d86489e7fd493e72e80e028b7413"}, + {Index: " 159 ", Address: "0x6FcEA1b902493E2dd94D9EA490700E6B81b098c1", BlsPriKey: "d7174a56999e52219787382395dbbd44151299fe79987b26e1cacfb9eb674710", BlsPublicKey: "d0bc7dc74624aa6fbde7e91f4072cada254407b8bdc11dcba015ee2a7ee37a1277b45e56df551562ef76c1cc49d9658d"}, + {Index: " 160 ", Address: "0x6bC118200f6D273950F957aA2156157cF751E681", BlsPriKey: "17418cfb5a52994e3cdd2b47eadf3b16c941dd8459e2441bbd0c206f04567617", BlsPublicKey: "414ad4605c9760599f0fb716ffeda7cf1716695d359cec934aad22a355409d1f422941fa3be492f8c0d276ce3e82fb87"}, + {Index: " 161 ", Address: "0x6d3Fb5f10ae1347b5225BA61dabFb2F7A5F96D0D", BlsPriKey: "f9a1311d8a8a14a7992a69137e02a5e6279e5d8ef62a50c71ec4e527e5a4a672", BlsPublicKey: "aa15db689d44ff62d2bc98106f81b7c51624f45eddcd0415a12a63a8aa28fab2fd0f9776a504eade3077dbd26740ed17"}, + {Index: " 162 ", Address: "0x6e923376145EE43671B1F5f6B259eE08EF330Ec5", BlsPriKey: "e48af4aa31adcfdeb815efe9589a101bef8e7328427652854cd1fcda3d74f926", BlsPublicKey: "7683444c50199ed104f7d36065c684ac07ecd7b06982c4b1d3ed38007334481167cb5a8af2934ffe16c33c7746cf1e97"}, + {Index: " 163 ", Address: "0x6f0832Ecd5361288Ed0E0897191AeB80fef3E918", BlsPriKey: "6b41103234f515f1889308a6f0404757bfea3b9fff74a2c7157cd37ef199ee3b", BlsPublicKey: "4681d4676f0b48b55aa771bcc1e1ea77b5bf865c27586979f329d40e220baab013371c8eb4a2f37d1b44555030650f02"}, + {Index: " 164 ", Address: "0x6fE418ed174CBbc500DB471ee49179e9A8DF248F", BlsPriKey: "d2d75e87b164e79baf820fe5ca043a395de41792d3a31556792f3268876d2270", BlsPublicKey: "9781ba32f635832fcb49ef23ade67494a4a73043e90ac9f1e142d62e96917c8479c3f907f5725f61d97594a406c76108"}, + {Index: " 165 ", Address: "0x70302fa02bC4b603be3F475531163f8bC83EA7D2", BlsPriKey: "466820150b55cd7c90e76ec8d0b2bf860177dfb3cb451cf42669b6ced2aeaa45", BlsPublicKey: "edab7b27c7fe0c81df0a1dbcbd874d0246b09add438559d0e2b94b5ff86339e0edf515f329177905da6525ac52346e8a"}, + {Index: " 166 ", Address: "0x7057dFC56072BCd80150fE810b2c5AA4Af96c549", BlsPriKey: "87ed77b27a7b356a360b9e85138613c878273eb02664be13c1c4c39b72fef752", BlsPublicKey: "bb6641d1e0f770ce456f30729e91683afe087765e8a2f55de47521087d5cc91a1a5d3601f7efdc7f15c6ddc35d132607"}, + {Index: " 167 ", Address: "0x7087194e46d6766635261ECfc8ecb8aee43b8cA1", BlsPriKey: "6705f38afa72e22e60f88a894e58b46b5442b949af0197b29c09523420880410", BlsPublicKey: "b232ed31fe981bd9d1288cf33567343c1e7fb90a52ec73c2418903d9c81122f6bf174bef2de0f156cbdbec8a37e23a84"}, + {Index: " 168 ", Address: "0x708d570a7b0E974cc3D4A4bf363674454c90c84B", BlsPriKey: "a24651aee88ae6ab40e9bca429d774058ff7ad2c294a5d4bfae1e097dc3f1171", BlsPublicKey: "07de0c18c63ffffa4c149d04085a7d8c80e4958c9938ebecb210f510a90cce595231f71edb99d74499a1429453194d81"}, + {Index: " 169 ", Address: "0x7200724064D7a2db5AF9260E6A14F14fFE9eCC9F", BlsPriKey: "85242d0d5833ca94d17c5a90b9ff65a2e2fffff03d31180e7ef86fe81ffd002a", BlsPublicKey: "adc9219611932358a6533f07f77b1a08f3034cf896f05369efea67af1157045af34287ef14d2cd80b297684734981404"}, + {Index: " 170 ", Address: "0x7234E8dFF697f93cC5945b31953303bDB997418e", BlsPriKey: "6ec5aba7a62ed3aa6d8465cf1ed4c8d50295464f661aa7e90618df215f38582d", BlsPublicKey: "1c73fcb1436928002b134b7dbfe9abc84a774a4bcd693a3339692e3d59373e940a7874e2294b19e99fe28d436f1b8289"}, + {Index: " 171 ", Address: "0x73BD0193121a53bbDC768eBa6AF393Ae86483b31", BlsPriKey: "b573b86f453945ff4ac93e78080ce9a6db46775b4843b2be9c08b76465f2f11b", BlsPublicKey: "61165a6f21db83ab68c6a1552e6d6f6d455a91c8766b3c47f928e208a262655f64f74b8ce4860e5cff4e340e9e2ba001"}, + {Index: " 172 ", Address: "0x74798b01776702994aA567E4cfdA313057360744", BlsPriKey: "82fd8ae28eda22f2b38a29303c6aa4fb6b1c40d47a434422351bf4f1343df323", BlsPublicKey: "4ff4df013921690cd2300dadcc6b7beef7f06849d2c21c9dba97d834036587296e0a88acf28d26d3152abde0c7b2f78b"}, + {Index: " 173 ", Address: "0x74B368c634AC7c4a78D35AdaD4D631d31697bfF7", BlsPriKey: "63f9b91b632c938f5a8d5d7081bb4784b4107a7c190d5f6404017d9dcd078936", BlsPublicKey: "753e35aafac02edbaa16c2d688420181aad7f0999b81104ce3d11610ccab18dd5f61a9aefc7b71b4ecc6b8fa75333391"}, + {Index: " 174 ", Address: "0x75d7ae6361ebB756201e044aFf34c91AB6b8771e", BlsPriKey: "02fff33c0a613ab804ba7e2d6cfc64272f1db6491d60f122d4383f0a285f0127", BlsPublicKey: "9b4208bd20092b897cac76f1f18c6635a6b81e20f5d5e7febb3285b154c3ea21722f2e6cf4fec876321878522a86c016"}, + {Index: " 175 ", Address: "0x7612Fda7865d441BCE510509f4ce29191C112B86", BlsPriKey: "979777b2645e0a9d27f9df4342b3d47297bfad289d846320d927ae07c7f0cb23", BlsPublicKey: "b6753e5d3d04ed4afe17f6af63f1e212d5855f2fca3b4e6eb80fc9985aa2406bea9fdd971cec36b9956c908991b90500"}, + {Index: " 176 ", Address: "0x766B51338c6C4F7De2d4f15357bdbA4B877C0835", BlsPriKey: "940a8d926af02e8d420b5db62c77232f59c035f7f39d4166135af5f2c24c2608", BlsPublicKey: "559db20449052e52ae36f25d9256f47a1bfb5b79f2c581d47bd0eb0c7160d8d0cff07f40fa6a1871d56218cbb949fd95"}, + {Index: " 177 ", Address: "0x76e2A98706F1d4d01e2FF1FE6D8e4609A0622Fb4", BlsPriKey: "be5e882e012ee26dfd026d1fe68bcae4561f493136e46972e869f253b7a8e335", BlsPublicKey: "9e1b51139a43369fb04221bfebe2bd4b32eafc9629bf572e9af2865669d818165895cbca958d6237253d649db1f95309"}, + {Index: " 178 ", Address: "0x770b8e3A35Bff512F173cE152BD1220d82bB9de0", BlsPriKey: "ae8e83c2dda35683bcb52ddba3aca7efae0bc5719d6aef296c47ba6107f02e3b", BlsPublicKey: "49a534b5b6be48890ae4e363b204434127f31396e7a452b6611000833de9445fbd314f40d417fb3ecba2f7fd31843b86"}, + {Index: " 179 ", Address: "0x77229fA6198791D333F286fa8360946042c65337", BlsPriKey: "dce6b6551dd63046fef127d18204dcabd9c0a2efff5024cae86f0d5e954e381c", BlsPublicKey: "8251c0223199854be1cb3b9e0aad9eeeb80317076123c4132e5339e8f0d7d1a777c5c37984652d483358194c31a48a90"}, + {Index: " 180 ", Address: "0x78404079f5081A5Dc38902b47257c0D1D4e2E028", BlsPriKey: "cdf0bc45533e55377572b1393eabe3eb270b6b495e9f64741d7271a10a7ffc47", BlsPublicKey: "fb759519c0c8a91a8de02d71ba1cf10500cadd8f59371a5d9bea6b02a22b79d16e75beae55a637319dc268178bf4b998"}, + {Index: " 181 ", Address: "0x79BE4EF66f3cc7B5b379F85353873115aeDbD242", BlsPriKey: "1d91ae936dfd994ae3d733cf660d83c220951f02c49f2966596432a110c67b4f", BlsPublicKey: "961ec5a0047c585a93e8117872e5b5e37b3450cc7e2e4aae9e06d50f6f003aa5d2a298d04828fff25aafc823a100f219"}, + {Index: " 182 ", Address: "0x7Dc053eAc8613229a6c316Fc436f100477571EE2", BlsPriKey: "1af64c8a54ef654f423654b21fcf6c93608d744bfbfb066878fccca3c3260408", BlsPublicKey: "8cee0faa3bc284ff2a19ce7124dc0092b006b1786994ed9bef1ab01ea7f2aa64fb1d230975ea9f2e590af55c10fc6f96"}, + {Index: " 183 ", Address: "0x7F58C0cD5c255020Ec94425873F666F1D68FBaA6", BlsPriKey: "4057a43ebe920b4e77edf917cbda115aefe8879c818a14b850238d17e3d57963", BlsPublicKey: "121cb2da7ab0b5ad30739b8d94686579944a283f7bb92721a2c785f2d9c4fc1f3a3027a3a6888f7da6ecf92f9d5ced12"}, + {Index: " 184 ", Address: "0x7F686454f91A68cC3248a642F59aDb2970e84D8e", BlsPriKey: "4e377543f022c94e5add8379b7a6483ae57182ec33aa594ec92e03cef6900b3d", BlsPublicKey: "4d89b55a7fd7add8c1a90e9c88995d2cb10118ecba52a91c9a2be2eb8014ff792319b6ac7ec55ec919852191ca2f7a87"}, + {Index: " 185 ", Address: "0x7FB5fF6e7aE8279F21B843Bc297b24bFbC45733E", BlsPriKey: "a9fae4d7179af52e732f34acecebb3a57d4c19dcca587200115fa1c46203d716", BlsPublicKey: "a2b1cca005227c81ab0039f8d311f54c87408b8d800b5e2f5f7361a0abafb130a9adaff0fa9071f8161d1ecb7c406e13"}, + {Index: " 186 ", Address: "0x7a22ff5B8483CE859757Bc0Ef7Ec64d11421B680", BlsPriKey: "3cf1a581ba45cf4a54f45f50e170e777c6d89a49d3886c4306b6201188bc8345", BlsPublicKey: "caa9e05610a65a360e0230e91918a668092344bfb5bfb53c2101b8fb08b4791b94aca091ddf73cad30f851224c677617"}, + {Index: " 187 ", Address: "0x7bBf40bD603B2434A964CdF979020B1E0E68E13D", BlsPriKey: "6498dcb3ebbdf3a76676aa1a20aec00137ec82341690f95d71892d3527320e01", BlsPublicKey: "778dc6f437d03d114cb4a1fc027bc8a451f5d56a36d499baf9aa1394697e5185f0ff01491e89a5e15ec652664057c90e"}, + {Index: " 188 ", Address: "0x7c14C7f6dE1f39579F7ab8DE24c168737E3FF53f", BlsPriKey: "e15aed53ed7c7044da20e89f84275ef59d9b52af17a45da13fd935380ddfc96c", BlsPublicKey: "11217c023c884bb055893ad92a7256ddb3f6ab0337322399e09e0717cd7f02ce844314f9fe65003e03925f68552e5992"}, + {Index: " 189 ", Address: "0x7cc507b9345a58B5232e16B49b02F365bEB7d91e", BlsPriKey: "041b40b44e3da920e90db1018e587bbdba76b059a9ba6f1b077bb1a7690a8a42", BlsPublicKey: "4a7f4170efd7b5f07a157e1423a74ec3c03dcc8ecc0f15640191655b18dd3f0f5b01bd9551b8651b623f8e6bc7ffd010"}, + {Index: " 190 ", Address: "0x7fC313531F4355CA2C0439f39b3Af2D419A93897", BlsPriKey: "f826915c1c14c7537e88716de6acf9b28740ed91f40d276d3f0eb8d94ea99b65", BlsPublicKey: "5f4802d47c4a384b29df685e155cc45a45bb18c397037af9e1c2f336aa778beed34b5c05bb06b395031fef952205a485"}, + {Index: " 191 ", Address: "0x8044Dc039C1AF68a580210379B8562A46938c449", BlsPriKey: "83e0d32d607ef145129133fa125e82f34c94138b5d79a744a9332ff7abe5696d", BlsPublicKey: "48eb5d101cd9165f06a1a50c21e0d7e18422aa838134fbda99fb628d13ba57a4d342715fa145a247c80a7b6ed1e73298"}, + {Index: " 192 ", Address: "0x804a1CE2387874E311e966c63A02C67dB15f2A87", BlsPriKey: "4203a4b0f485f943d35b5c9312eea79cbc29afda41abcf7faee02c3beb4f0b35", BlsPublicKey: "106763ef767f063b7380fb6973eff61d797c8156fd5d2c552628fef3139639bbb6995c7784c3e6af78e69d0d35da158f"}, + {Index: " 193 ", Address: "0x8080ca14e1b3466b3b13441cDfd0f413E0BEb67a", BlsPriKey: "bb0832c2e4051e5b75acbee816680c777b453f41569d8b62ed447e2846c69918", BlsPublicKey: "7d7c0d9c28682f9678441a12692b372b6a49b8967e99c6df13969aec8d3fdec49fd23f23ffe1fa48e14f738909c20208"}, + {Index: " 194 ", Address: "0x80FBE7a01D593aC28CA1fE12E9CE62d6E2a08e5C", BlsPriKey: "8a1afe54881195db769e19aff8ac8620f565bf536332a452ad21e6865c6bf86e", BlsPublicKey: "120ea3fb602639a0f74aaa4d844efbd9119dca87070f1aba788c3a5fcaf2151db22d54af5c352b186963a38049356c04"}, + {Index: " 195 ", Address: "0x81237F5d14F5db4d6370D353e3F5952e7aaae0cd", BlsPriKey: "d03a76a9aaeaf099f166717a5c42f96776294971ae75cf62d3c33fd1c61d215b", BlsPublicKey: "a23751100836271788c7713f81181fbbce6c9ddbfe0e2ef313b82118e625fbbb7e192d92f90a5103ac4f5e70f8371801"}, + {Index: " 196 ", Address: "0x822D6E108e434A3C2B27E0890C5DC3936D009560", BlsPriKey: "b8a4f97f396bd209d4fee1a30b1ffee79d9c83739e9bdf3227bc08030fb3231f", BlsPublicKey: "b602d406e9bb28bbe2f2e539c517576d8965e7922c7d3bf5541313b8721f4eecfdbe8a522cb0810edc963e295dc71094"}, + {Index: " 197 ", Address: "0x82375BA85Dc7F301f6609a39E2C3FFccB1433d5e", BlsPriKey: "1070ded9f817d8b50f18b736ba3d6c4e7e20d65e2156195946779972bbee9536", BlsPublicKey: "3eae3f9f5ffc91b7a5d137f6be988e2917209ae93f6bd8cc47742788d5f4128e5961fa328861fb6ca16416ecaf514087"}, + {Index: " 198 ", Address: "0x8244c534557d3d40caD3771EdeA45d394bbc3f60", BlsPriKey: "adf4021802fab7756e9e17cc3232ac55489e82de3a435c0c5f04f30c49c2d92b", BlsPublicKey: "01965c19bd84c226faeec5e0f43ff8c5525050e45c183d59fee76467e2fd59e1128cc9f112b80894d3fb56464e53a499"}, + {Index: " 199 ", Address: "0x8265cb4Bab2c82390776e17ACCfa0D5EaA785e05", BlsPriKey: "f0060b110bf83cd581662e3e8bf416619ea4342e6c9a7020be7fa38e5d23f925", BlsPublicKey: "1da80dff575337aa739f16bc34576ffea8ea6c7419ad8ddf135ad92f57edd69eb35c1d7663e52f13a6758f615e0a7882"}, + {Index: " 200 ", Address: "0x843836cd5F7FA674a8394bA7029E5FB6C1Ac445d", BlsPriKey: "6ecf1c1fc0c633d02183fe0e4f3c14413c0c411690538564931ef9c2bd19cd3e", BlsPublicKey: "9c0bf2f64a06cfbbbd624c21ae54e4dc49f74d90580c51febeff8fa326982a93514673bbb50b7c9130640b22eddcdb16"}, + {Index: " 201 ", Address: "0x8472C1E3482439e8ab74707A37AfBc1450744487", BlsPriKey: "458d298a9c1b9e4caacde66da69fb7142f08b1fc8a520b32e5bdb84415b4db22", BlsPublicKey: "72810a2ff48e0f4ce040d8d68f1eb3a5aa3d82dc39b21403b39aaadfe42856c953df635db3126e4169d62eaaaad1e693"}, + {Index: " 202 ", Address: "0x8523F06c816275Bf969935d81c3F8a567BF5C4ee", BlsPriKey: "c40522909275638c55cfdf6881ddc725bc2cd3c866659f34efb2e9061a701634", BlsPublicKey: "6b072a7e62ecf7ff9bc0f635dd42931ae49c8f09a8641989e154dc8a37548711e3f797e9530798842d3a5bacf218a201"}, + {Index: " 203 ", Address: "0x8596ddC36ab3AdF720519D872446D93E3dD56b9B", BlsPriKey: "6f97fc6608b231ab51718289350fe50e4832ee3250eb7e9a53d327d7c54f2705", BlsPublicKey: "d768b53113b5cc963bfa288a8356ce0f3c286cfcce61894e15becb8cda5a54fe786793a98ed32443d9098e0bc496bd8c"}, + {Index: " 204 ", Address: "0x85E1bADF991A19013282C956f1a64CD468832465", BlsPriKey: "93a878a165b5917648a832bd67332259ecc4cc6d48286b2341a8182b680a981f", BlsPublicKey: "57cf328e603cfdadaab33c88c85f97edaa98cbc9fe7321f2e4312bc00b62ad3405dee927595a48e135d756e9e590020f"}, + {Index: " 205 ", Address: "0x8A61A375d192c324348a590387fF9385137e3516", BlsPriKey: "8d0121ecfdbf14ac2e61d69010d1789d073d78da75d0fc8c345351aada89320a", BlsPublicKey: "5c8938ea179660455c01b362ac4a1319862fafce14911a3f9f02b70cde3680c2744bcedee67dcca09a4198a1833bc897"}, + {Index: " 206 ", Address: "0x8A74D5F8Cdb657DA50BA3670876b0928F2639375", BlsPriKey: "42468dfd0b42f7fdd2c37d44683528b5ad2f007bcaa13643f4d5af32ac49fb4d", BlsPublicKey: "fc0aaf0964c7ba1d4cdcb3c01625c74200fad58e780ddba1e80f790c41b6f0efd366abee5ce725ee5abcbe173762fe85"}, + {Index: " 207 ", Address: "0x8Ab219d5F9FFEB2E05631852be69F9Ee16192b53", BlsPriKey: "a12547fc0358dab7ad43e94a8a95aed2efe26df3c139ad7281511d25dd4c091c", BlsPublicKey: "d9ab011a4cfa46108ed32dadeadb0c778e1ae1d56f47f5fc3d0e1cc5aa7e5ca50737d816f578c54330f92c2117731d88"}, + {Index: " 208 ", Address: "0x8AdcE99aABDc8e149807A4ee3Df76a85D726C76A", BlsPriKey: "288cd70f39f3f0f17b1e69323080096ac8dc4b77e168217a684480ce85c50307", BlsPublicKey: "7afbcc3601b6bc28afab6ecaa8fbb37c54649c1d34e810fd521fc887f5ebf1188b593fed7b0f01a1aa0cb4a96d880b06"}, + {Index: " 209 ", Address: "0x8B98C8f1aCf11b58f30aaac600b8E72102E9393C", BlsPriKey: "bb7888370ae6a76bd8b31ae0dd214a7a03a571a63269aa83bfca362007e24f61", BlsPublicKey: "650dcc52f189fe758a6ecaa8ac36dba0a649febde1b3da56ce2b715ba1f9af1b42f171683f2e9a55b1ae6a262773fd19"}, + {Index: " 210 ", Address: "0x8C0090401130aAAdab6D1bF68E42d66cbbd05492", BlsPriKey: "0131f23a6fbf21bffaef33bca666b7168ad0592366c1bb56f41ec250c191bd69", BlsPublicKey: "17bed8edd6d5b33f05329b6272a54313996f4a04457a5913889db017723c94cfbde075ec4958fa135383f082d2f1e48b"}, + {Index: " 211 ", Address: "0x8CcFA7D08aa57BfBaDf3F9c2398618FeBC6242C9", BlsPriKey: "6f8f97dfa9ff60b86c87db5790f6f5a461387d672573e9c3c3d1aab987064570", BlsPublicKey: "7275ab2d16bfe128361dec9a8c93109ebf0d34bca4df4679968d6762f6f590541ab92184bb9eccaa856fe4560235620e"}, + {Index: " 212 ", Address: "0x8Cd0FdaAeAB633dE1156167c4cFFAFBfd1115262", BlsPriKey: "9aa7a8b03925514edd349511341225d2be3d21c4fb982ff2055ace9d8ef6cb15", BlsPublicKey: "f69ffda0ee8cd9cce33e298a05baed3be68f65b5d7f4d7968b098c6db0d06ecab862f4bd573961b972d0945008b85811"}, + {Index: " 213 ", Address: "0x8D83762E8aaE86c89C7BAa5a7d9Fb3eCB0520c11", BlsPriKey: "4b46ffe08f03918aade956d3172e6cfcbfb7a091e72adce028daf83e4dbd1a3c", BlsPublicKey: "7aa4937ea49b492852dd9b9e2f4f27bbc001b1989ccb8f7c69ff6f4100e3357f736247487e4a0a21679580dfabc86e15"}, + {Index: " 214 ", Address: "0x8E6727f22F99a544DE88829547be11bFD15d2e74", BlsPriKey: "cc467316a160bf7f32b49e75c03556c7c534bf6d7568ce2d21e7f99020c12e35", BlsPublicKey: "e3020d8e76d59201fc31d79d2368b90da9406fb31e348f79491044f62103f898fd177e7326585768bc180f26e1a1148a"}, + {Index: " 215 ", Address: "0x8F70bae25fFB3b4769ba03f7F25D41011299ce2F", BlsPriKey: "6569207f4e9649ef70f252f9893f9ef88352ece774e387dcae55f4d676a5d112", BlsPublicKey: "9b96ad80137dd82821661f5048420052e4c8a997054b8717171ebb5a04fcfdbb47b8d61b13a407f04bc02698227ebc87"}, + {Index: " 216 ", Address: "0x8b870d5E5D1c7F8A883d033f2B191B9A753b7505", BlsPriKey: "09c58267d1c39aa48f19b51e9370b676bfff9570b1c1b649549f996b8fd4be38", BlsPublicKey: "e13a9d979f261bab616e41dc133a84d08d04d30a5e46811c740b99632d98601125579f4f867626d3d343e5efa0e4b688"}, + {Index: " 217 ", Address: "0x8f16F6397D1FE318c2C99f7393Cd0AF18c6e9400", BlsPriKey: "4429974752c0da574b7b58653a781d3d94e27a25f07e363245d651b39ab5a94f", BlsPublicKey: "b5286b617b1b68bc372f727c3a8326e3788e0b775e76371cb3c6f5c5607a7ca7f099eba80eca265b8083bb169237ac0b"}, + {Index: " 218 ", Address: "0x8f1ACE0ae44D9fdCF5E6f5499fA8622e8EcD782D", BlsPriKey: "30d5665a55ae4279d657d27d517739a7855a6ed313c29986f3cbbc7580db871c", BlsPublicKey: "c5162b2b9c700cb1d882b92cb60a170ed7c73038b1326a73c42685635701708bbf2800d0d10d05b8b99208ea6ae6d98a"}, + {Index: " 219 ", Address: "0x91136E3d84a594A375A40dAb2BF0499aBE4af875", BlsPriKey: "c89a9767d149bb89c71997dc161ad34189e0527ec51a69a2108b5e457a200550", BlsPublicKey: "98d008b5250332f00e3e2e66097129bd0e8924d0baefdde24ac199e3bcbb87fe9574f55a258705e1fbb0df38c75ed712"}, + {Index: " 220 ", Address: "0x918c7E1f1CEdD25415439786A53c3C35030beE0B", BlsPriKey: "e4a87d8519a350c96e81a63bd55a825fc2c511d3e0e723b7af03600123d8db15", BlsPublicKey: "c44e376b40049abde7a6dcb6f93b3b6f8c5002172a2a09b9a365a854c7c7615dfe787b27a1a68900796b49bf46dc8793"}, + {Index: " 221 ", Address: "0x91bD0CC6c2016DA1B1AA798eE7fC30f6a3327d15", BlsPriKey: "10ea1e6185177f7165bca70da9312c31cf5f2f736043185f0bcee5b0aeeb2c54", BlsPublicKey: "64fcd07c71aa7f3641cd4c3007f44a22771dd3457952aff4078b4fec5dfca3fef385d774258908262dbe3872c13ce189"}, + {Index: " 222 ", Address: "0x929Fe1f0Bb4E21704c2D63c12fd563553c77E912", BlsPriKey: "dbd9899991ed3cfdc6dde112c0578fe0a4d1987b594140ed236d77608ccb9873", BlsPublicKey: "f1d6b9829548987e64f3868c85ccabbe431a129e3e9741c8e6523bdd2a919830ee0fedccec44095bacfdc1c4df5a4508"}, + {Index: " 223 ", Address: "0x92d4dBCb8809De9980aB8F95C573DCc1041a346a", BlsPriKey: "a41fd599bbff81fbaa3aa6d0ea1ced98fb57fa3ff505d89fc812a9ec33441136", BlsPublicKey: "7b427511768e792d0699bc5d42169bb35e5bba5b99cd5803134a7241c7aede41641a8260523fd31ebd72a0b4ab92b409"}, + {Index: " 224 ", Address: "0x9423bD42443Ef279DC3b73f20E1c4223C398A12B", BlsPriKey: "84be0d4beefcce4d93af2ac3a013efe34bec43df7c0bde6ea0f3e2681c26dc2b", BlsPublicKey: "ae5fa07d8fd26641c09b8fd2e041ae411d0d6c05a3948add71df9d1f3db2766d7896fb7cae779829011b9697bad75f8e"}, + {Index: " 225 ", Address: "0x94257dE2c456265883152Ec7a425f054631bC39A", BlsPriKey: "ac5c5efadf235fdb0398e47a782d84763f85f9384bc3dd9b07c046d0ec85c733", BlsPublicKey: "ccdb6517ea68deb3411a416a87f51d4cb28de468e34179cc6fa6bc840d998f78e1f65e8516144fd4436fa9a82b4f060f"}, + {Index: " 226 ", Address: "0x945D919f1035F6D5fD480800500F8fC524eDda56", BlsPriKey: "7022992ce52c7e74219b2f4033beb47fa84cce4f0b7302127a40dc131f26fc0e", BlsPublicKey: "257e9d1d01902e5cf4938a2d058d2d1f0ad039f517298064c87d02046a37663ef8fba075fa652911d248dfef43050608"}, + {Index: " 227 ", Address: "0x949C42889D7A48641D84E104E60A2ed56a1aCD7c", BlsPriKey: "125ff8af7b7445e4c0ca031e197dbcbd94721e24138a11ca50cd0aaad9cc340b", BlsPublicKey: "5d196430fbe751e4f33b04ae45951c87e55b85cc9f819580223f06d0136e7bc266efddcd8827c6e909ec0b490b40fc97"}, + {Index: " 228 ", Address: "0x94cA2706dc707449E56cC72702a6D9C2a1aD2E5E", BlsPriKey: "5e20c22f2f1d5e3a8b81a5975a59f7eb69845655ab6223ef6972efd96af5275b", BlsPublicKey: "6832e83e5d6cda09c239a5a1b841e6997b98390926d0ec8b5ad4e72cfeabb8fa453c525dfc9d5384fbd630e6ee9bce8e"}, + {Index: " 229 ", Address: "0x956545e1eA3C5Eb90E71E33941307A5498F0897F", BlsPriKey: "b0bab1d57ab9839272bbc43bd2076506ed8c646cc5e4ca186df990f04c844423", BlsPublicKey: "847f3c7ef61bb890cc6eb774ea4f730d0efc8949c4bb15fcc3231b4762727fc16bd651411efb1c1e35e02eb90ad4d710"}, + {Index: " 230 ", Address: "0x956c3d59b33e1B794Ec0Db0825E4bFcC0b68C7A2", BlsPriKey: "1348b13acf8c43af78485fd066618bbf43c60165357c7f8918f98dad6a1cb853", BlsPublicKey: "10f4c90b1d18e63f332d6c94e8bee37ab787c36a3356c2146250ebff3994f511065b68940de27d91bec1563f86b4c282"}, + {Index: " 231 ", Address: "0x95D04aF9290982333d2A647Ff994E5ECDc9A6d5C", BlsPriKey: "8842213e1f3838928087567546c0a88e0a74ba114bdfcbb7badd530f4be7631f", BlsPublicKey: "0d4dc0b70339c906e85ac82068526561dfe646b2687f52ed39b0fea5cf1cb1f4e91ce29e4eba5016dcc14e0fcced2788"}, + {Index: " 232 ", Address: "0x95E0D358E5FdDF85f4266f1AF31C08D269A1Bd0C", BlsPriKey: "bc75b17d0c241b3f8a461e591dcd86f0dc39e9bb53e13d0938430cae105da066", BlsPublicKey: "62c70cd18cc5249b3ebb00836d3c109237b7596f77979851315767a58f04062e5fccfa94a89bbabbd76d8c4dec36b518"}, + {Index: " 233 ", Address: "0x9637B9690f424212eC563D27faDfb5405d87ECbc", BlsPriKey: "b4c4b1395b0c947dfd96dd93f8b85378df2c6c08b64fd4bf95eda9f23add9f3f", BlsPublicKey: "372aade4eb8fa5b179ebf907a7eb41e15188e33fa33819c057e51eccdc1073740f119c964b197e46de152ba4a853d811"}, + {Index: " 234 ", Address: "0x9699B184547c8A72E2720798cc844483829AE364", BlsPriKey: "e5e0954b126950bb3dc26406adde3182724949b0fe3f8f0c5c47d7cf00560339", BlsPublicKey: "7dd9cbf48953951ca7db76d63dcf9a19e5f8aa712519fd8ca4666b5f5c58a33a5192d7567441f53cc54e0879aee67880"}, + {Index: " 235 ", Address: "0x96bEBCB6c547e24071360fE52c8DFD1EceAe1159", BlsPriKey: "d2bc924451707c627097a82ab750d0755e871cb316564ffd95fa883fe2465f20", BlsPublicKey: "ca3d3efd16a5731edf1568cbc3f4b28cb4db5a6a3d0f7a7a85a63f69e09dcc31bf876782902036192d332035a8aefb81"}, + {Index: " 236 ", Address: "0x9747CC556515c00E2966fC83A81659D6C3977Ff6", BlsPriKey: "c40eaec35a42d801a879786e4d7d42842da52799d5d6a28acbe44ef0897c8c6b", BlsPublicKey: "289b95fb8933ff6be6791555b9b56f841caa5226c9783e1457d223348da01fbb3cd9b4a082737698bed38a852631500a"}, + {Index: " 237 ", Address: "0x9862aDb98793D1a25Fe75EF315DFa1f3a2133652", BlsPriKey: "d7206827ff45ac69dde683de4eb6493eac17acb4aa855c216a8b212b8598ab1a", BlsPublicKey: "7d63e5d2b158efb015f6a42230d3f4b340aa0cdb299761a5d1b4d158ffe8176f79369d27294310b967a4937bb4762d0e"}, + {Index: " 238 ", Address: "0x99F5bb9F80643569A4AA8AFfEB64FeB06bba29Cc", BlsPriKey: "4760740bca6328e00b7c4dade8305f46fc92b1b775ca25a416c4acb3e12e8737", BlsPublicKey: "0289f1278dca0032c930d7260575e22d14fa79d0c188c79d07612406513adb019f436c4af5fd104c3f3ecc029711aa85"}, + {Index: " 239 ", Address: "0x99d2ef179790030eD3aEBDC0E471BBDcFA6eCc70", BlsPriKey: "666cc194602ad0a76cfaac150d23f78811c4f73c6666dee3d9ccc75465785b08", BlsPublicKey: "9351d639df7a2bd07a3e8c5fe8112e3d3e958f62bddd3956757f735d0bced7cc350c5a6898c1393cc5846f38327dd089"}, + {Index: " 240 ", Address: "0x9B844e64A50a1495e1ff67587b9AB44d47129F90", BlsPriKey: "f0e59ea1b0650f4f4650ced8195b97926615090871e4af6b8858cbdaaca23765", BlsPublicKey: "ed26434e12862d92b0e68a96ed06f232e61b0f35a9ebab69fcaf55f2816469f4e262bf1c8711149f473de6ea4c075302"}, + {Index: " 241 ", Address: "0x9DCd46C76f46e0C813523b8E1f180A2D5F37831A", BlsPriKey: "fcd230958a8e189243c3f1a5315949f3e0e6776727786099c54c61469ea51e4c", BlsPublicKey: "c261bee7d17b63a9ba98104da148af939869bfd43f51b9c3486b46ee3be5a95e8906da4036b77ab0e6ec186a2716fa09"}, + {Index: " 242 ", Address: "0x9E715388FA18e42F05373396dc4333199BFD6309", BlsPriKey: "334c4b148a5e284eb654aeabbf1764a4edf20ca08d066c9a2df58e39194ac609", BlsPublicKey: "7017bc51ff420c2cb7e1128792d6e4bed0e9d0a67cf891f72bfba049c24616e1797935904bb9e19e6441215f9665388a"}, + {Index: " 243 ", Address: "0x9F59275941150FC43215B66cf0Ff8e806CD13F85", BlsPriKey: "69cfd538f35a969c1d64483312a03fc93b5efb7e03f4c49f23c971aceb851834", BlsPublicKey: "528ac7648a48e9a6650b43a01d778b2274f19378190920c74be9eba88bba99d1f5df6a795494c35c1eb886d09b57db8b"}, + {Index: " 244 ", Address: "0x9b353a54E0bd19EB7849252df0d48053b0B40fa1", BlsPriKey: "9c07eb4035c55abd529160c3ac54a7961b17a02014723b97989edfbcccc3bb44", BlsPublicKey: "ecb5ccaf58abc85f3c6f1cda935aeee03a4883d19a338e082491b2865ffd7328399a8607041223d642c28d37f52f7309"}, + {Index: " 245 ", Address: "0x9e6BEc699cF0BF5ba303C230711CF18172CC65f0", BlsPriKey: "b5da74e24502d5c6731d5a1b3aa49c1fc551d2193aa66a8f83add44ab02e8a51", BlsPublicKey: "7ecbfd63de1f32e8104041dc521de1d67cb4f8472faafe3758379493926a3e6e4f27b90e094d2e32642efd329a061396"}, + {Index: " 246 ", Address: "0x9eBD19bcEB9e8503055d504de006B69eC724e6E7", BlsPriKey: "a5662f394a9f57511fe5e21b49286f75ce5f5735616a2a72341f87d4ced1fa71", BlsPublicKey: "4455b2db4d1635a26cd13f82bf302cbf9a7dfe0e78289568be702560bd4799844b7cc75476d6caaf22ff6f4916d8f10b"}, + {Index: " 247 ", Address: "0xA123a6AA1Ea595D1561a7D65d14b538fa3378fa9", BlsPriKey: "70572e4630b0826e96f77bfcdcf5e32dcb7a6e847977126cadd40fea2f66f220", BlsPublicKey: "1b0e3ddd08f2f829cbb36056ef09eeaab3c2a1f4e4da0f3d833df44b5b85f821eb0fd5d864e458967b112377e3322316"}, + {Index: " 248 ", Address: "0xA3F7ec53f39415aa1A1907F95FfAcDf46dFb9fa8", BlsPriKey: "32bdaeb1690fffe08cb800c6d36a03b11ceb7d0c0de3426f0f24330a5053b168", BlsPublicKey: "a5efc6d7fe947c4a97d4a2980bc6e1bde9dca20b88bc96c558d5934b70f33e86a69d02a0f1c4de4b50ecfc134a914216"}, + {Index: " 249 ", Address: "0xA40d92133594d20a13FFbD396853476373B85E61", BlsPriKey: "651ea5ba7d5f51b80b62c8f4f1a854d9032ce6de797962fba2957999c0d0d60d", BlsPublicKey: "64d8eda11c72ff5da438103a0ca216db6b36a4246b24e532e3024ce4313071075eda4625cc525373a28b96e38d7bf104"}, + {Index: " 250 ", Address: "0xA53a112afcE812F55A22EbdE2214FD1ef555B9Cc", BlsPriKey: "ebe4807162b2c7a2198c887cc789e73e0789b7c3805e6b67a961b74a90434b63", BlsPublicKey: "47e4c3b7d00d1a5e9dc05671488ea006c000aa12a1775197d2dfe93f013d52b8eb52ce93e44378326755388c038d7792"}, + {Index: " 251 ", Address: "0xA57471E20BDe6a199a6967c113545b7031551eA3", BlsPriKey: "4b8c2963de75a99c2005a7925eb14a7d974f9d7ddea87032cc144fa40013252a", BlsPublicKey: "f87292abdd7f1289515d6f765d812475b190ebdf8eb012a46566379798101ed33b6329232ae89bcd03193c4933170294"}, + {Index: " 252 ", Address: "0xA652360e89E08CdE3A99be1b22C60077c96bf85e", BlsPriKey: "cf91e21e94f95991a254764ad758cc91d81ee5b33d93401d0094a2982300c25d", BlsPublicKey: "3d44911746893157c1ddfe83f32a6c01fd664d28876950112e913ff9bea735e8338f1f91ee027cdbdea1b1b5a99b9d85"}, + {Index: " 253 ", Address: "0xA8AF447E19ba3673263d1d9223138C726D4A69F2", BlsPriKey: "57414c7967d36a091d6802d272ce9e210243f75b5c6547188b211f5710457036", BlsPublicKey: "c9ce6fd4edf978c64b30161fdb0dd8f3b688245aafe721af9dfd76d5d89ef209a4a9c9041fb35ae768a45a6802b7548a"}, + {Index: " 254 ", Address: "0xA9FF4Fe2b64BF6341d2016488CBedF0F660Cb35e", BlsPriKey: "5acb6075441be1bf656ce5519d58c455a0ffa7d7f66ee3040fb9179250bc733b", BlsPublicKey: "09348d406ece177dd96b1d5dfc2560ba614cd990e962ac3fd51d2522c917753fafca61aaddee17dce73b78a435a6e613"}, + {Index: " 255 ", Address: "0xA9dd45caf7963Ec0Cf71067111AB74AFAd84B53C", BlsPriKey: "bb359f545fed79a73f4489d7fd09ec10161ba4ae6f678c51844f6176b20e6e10", BlsPublicKey: "7173a0a431e309fb39c42483e3c629ba038b4f51e2206ecccb22a0737ea67e87ae4ea8f03ea4a9622e49b1c6628be00b"}, + {Index: " 256 ", Address: "0xAC8E1689872748d074B123dbd8D535fF82d4FD7F", BlsPriKey: "1e7687e85d8e0a35c0c19ca352e64e165b7cdd5b4988c9887dd271944bd2d035", BlsPublicKey: "c27547cea4e92bb6c441b718c837fb1894448564d03e18ee5ea7532e8e45edeb3d3de8183dceff9d7a42d038a6398180"}, + {Index: " 257 ", Address: "0xAE71c8067bf12C0027fd5ADcda9fd006D5e02a21", BlsPriKey: "1c43673f0ad132a7acdf0bcaaca35ffd5e46d1daabd1adf9e542182e47089112", BlsPublicKey: "05040f922c5c1e2e2f8cc71498341ac5cbef1dd05627bdc69df1b3d8dad85da7fc1c699f4e362fd3ac0da3d745131b08"}, + {Index: " 258 ", Address: "0xB32EC947bD777294924746Fb9A2f1d870c7D7b77", BlsPriKey: "14670346951dca5d6a2460b2fa7c7e9289aa08db22fd294f09a9436fb87b683b", BlsPublicKey: "6e3b1dd19d716650fbb80723408bac5a272491f4a3fd857150e9ddb550f5999950abed358165a81403ada1904fc9620a"}, + {Index: " 259 ", Address: "0xB340E34F8f9C73E7F1321102912E5A1A888AeB8B", BlsPriKey: "19527897174b39d594eec02a395fd17badf45bdbfa29c516d4cc6795c4de391d", BlsPublicKey: "95c9ed4d32296aaf1ca6c64d1158770f4416fead4891c0d59a23660fe356b39941b3de17fbd86e7d3534f57604dde281"}, + {Index: " 260 ", Address: "0xB37A17A8aaB2c51297f2207D9325450Aa9FCbB3d", BlsPriKey: "d110ca4e7234abcc7b04f65e0e81c4d0114cc00b604a5d1518cf91e3c9ca9538", BlsPublicKey: "7c75994aaf296a47c25ceea00aae49f89e090756bcdb69878494ba0907011575b787f4e8499c872345abe5e915e80291"}, + {Index: " 261 ", Address: "0xB3B065fFB5F081170A1b3a7497711A4f0AA8405a", BlsPriKey: "d46a7ad5decae8b633a9547f1803c626bd4d21a72f8b96e06112c3a0d9860f4f", BlsPublicKey: "1b13cdc5a54cb97eb92dad6ba9be8abce51cb299b741034d0d1e45c043d67e8e9d1ed59cb2c00d13a7af93b34dfa7e0d"}, + {Index: " 262 ", Address: "0xB48856c51a2beb57df0fdb9D53463F36bD42cded", BlsPriKey: "818f0affb25f0fa502d3075ddf55cc1dfc8576225b7b3908981e69d1511b9026", BlsPublicKey: "01494df30ccf741bd1f780b2b4d32395f81474cf6872d361df5380c740656cb3e674a038fa25d98fb5544dc5a40abd03"}, + {Index: " 263 ", Address: "0xB5562E105957e2F9fCc4e0De836032FCc4Dd2689", BlsPriKey: "f1cf5a46c65a2d4540282936f10afc9d23fd9451f3985d48a28ab5c6b254be36", BlsPublicKey: "a0c94655053f2c6b3f44ee775596c342c25358adf819eeefb1a2e51acb3323d0642f99562b6449746b67f19dd1f66388"}, + {Index: " 264 ", Address: "0xB6370063dC8d761B3655398129F55eAfc80F35FB", BlsPriKey: "5cb9981470e6ccc8663e33cd8bf992e9f387ebe2027652dd60a4af94fb140d01", BlsPublicKey: "d70ac1a3ed6e7e482e6465faec989069e8c54c208d13daebfe4712967bed92e8eb8f54e86abf3f9ebcd83505224ad486"}, + {Index: " 265 ", Address: "0xB79D19d38bcd7385a133EEb882130fc904c8440e", BlsPriKey: "5296b7141619c3c66f97affcb07ac1a6695e17c27c61bad43a18b31ea59ad726", BlsPublicKey: "688ba1738efe75175de1c2683379d44de9e87a2e06be2713c63621994929cb0535c3bd25b0908c2b9d5f004e5974f481"}, + {Index: " 266 ", Address: "0xB91b5bfc5B127D2eD459AA630E89cf22fa2F97FB", BlsPriKey: "023eeb9332ddfcfc87be3d7eb940c2a83be61f9e7e58123bbd6f93fc33418763", BlsPublicKey: "643c6e9759544ecd961d9658bd61a422c721defc01440df02b7a9a9d15a68d5ebde631d21bacdee3f3c2c4536019a684"}, + {Index: " 267 ", Address: "0xB9E454ad521658387D8466211A2EfBa67D5b5E1c", BlsPriKey: "2d980ec857c508a84a5b316b7b71f8998dc8386d972cc147c0c37e559d3d7c0a", BlsPublicKey: "99f905c7aa04f43c551233e70d0186b9d7c28348cdd371437885d1bbb746add7a13837c3be14535db0b40c3524f5a005"}, + {Index: " 268 ", Address: "0xBA18CcF3De40887863Ec531Ba26601800118d895", BlsPriKey: "d91a7dcf94a36b8563ecea8cd12f4875b1f784f17da57e5a3a3e59677ef14d4c", BlsPublicKey: "86775bedee4b8c4644d08bd30694c834cc04a30a26660fef8aba595881735a5bfb3ffc3945c52d9ea713726b0eb7718a"}, + {Index: " 269 ", Address: "0xBAD8736500D4A532C58AdBD0371C104fa2963742", BlsPriKey: "490a4c0e45445193bd5819378499ae80ff9b828b28233da3e10247864904842a", BlsPublicKey: "2e436d9cec5c89e31e275ef4cac924c6bab5496e7c2b5b157a8e9a7b0be75534be423274f29a17b527c91bf6aea19093"}, + {Index: " 270 ", Address: "0xBCadE9E4936F8B04dDFf820357F1C2C069E34F1E", BlsPriKey: "201414017504d5b54f806a358226b2611274dc0dd95cfba1aa9739881884b814", BlsPublicKey: "598323e9bcadc5dbf57acdcafff0b32f45a21c6d4c7a18305bfdfbea0e8a308fcd9c816958f2b8386ea371f0194bf702"}, + {Index: " 271 ", Address: "0xBD63c16C80f5526c1EBA246A3465671584B2934a", BlsPriKey: "3f9255f7270fa2da4656df7b91e7bb5877457be1168a7dc145e13fc4eda9722d", BlsPublicKey: "17bb3fa64779312f26d69de826941aca43840368249887c0ddbb41a08e77299471c7d17c04aea4354bcc6a23ad4d8018"}, + {Index: " 272 ", Address: "0xBaf1a0819EfAF0979b86A06FD3082Ee039e260A0", BlsPriKey: "d895ffa711fac6056ae4c0e363231500f3f366a11642917b0847dbe45dfa4829", BlsPublicKey: "4673074dc24142591eb4ce34833119f4e350fd3e3d325aeed66e0bd082929a27efe7f0d72f8fa6c618912c8b5ace7105"}, + {Index: " 273 ", Address: "0xBbA4B237fe8C33064b4bB51a236385Ff874445c8", BlsPriKey: "0f79dafd2eda099a9bf1d604fcdee31d29d5f058bcb8f4acfdc5fc407f69dc47", BlsPublicKey: "f99bef03cdf82854f1cb88f09d535a732e1faeef43d095a7783633238b63cd561d1fa192b61cb9deb8601d807cb2ab00"}, + {Index: " 274 ", Address: "0xBe6e4235E7dC80835bf6326607f6701B046BE1B2", BlsPriKey: "ef4885681e5df6bfd4179aa7dca435d61f16094b4f7e7f361bd00efb976ffa63", BlsPublicKey: "7d365669ab0613a789b25fa5926b6c3010838b870a9e38ade8ea18f2a74a2f8698471f17fd6a67b729ac155964263c01"}, + {Index: " 275 ", Address: "0xC046ab6829bA4A7cf695F1CE39Aa121fe2d2650a", BlsPriKey: "863b4fc442c34e4296e0d510bb5a6b80738ab7a95c26551478a5c598ecabe368", BlsPublicKey: "13b2497c20e1e7debc4404f26c4d136aa00a2128ab04763680325045c5164f9254f625aaa49820f1e8ac1a21c7c1fe8d"}, + {Index: " 276 ", Address: "0xC0cDc35768Fe19eF60D287435c625f315f70eA51", BlsPriKey: "f3ceb0cda3517bafd1764a28efa897c0d888b8bebaf89da6a320ceccc0680506", BlsPublicKey: "dc547dee1de79b2e0c2e7f03ebfced8cb2dca5adb433a66e5346d2c7597c1d8e943bebc3ac947dfb1e7dfd59a1799784"}, + {Index: " 277 ", Address: "0xC132eb0bD93De571397A26d3e30Eb77875fA7d97", BlsPriKey: "b7d088cee9374d1d12c6ffea2cf7c36e0ff85e32f98bb4a683212ff995228b1c", BlsPublicKey: "c5547652f43696a26d16844a72a26b2706b2b5a268c419254c7f704bc2c9ca255ef4d35e73247f2000efe9f3a86ab80a"}, + {Index: " 278 ", Address: "0xC36b3c49190Bbc027d08C6757Eee6F81A8B8d0dF", BlsPriKey: "951539769615afb103a4da021a6de2fcd0835ce70f989ef65598b6dc45a2a11c", BlsPublicKey: "36ceb77c35e0ff433da52d1d2684c36d48d3fd6481ec19491c4efe81424977f33aca1ccfa1df122a1c0f0f6419accf86"}, + {Index: " 279 ", Address: "0xC49034EBDB90ffD6c7767FF85ae3B30e03C29CB0", BlsPriKey: "dc1179ab707f8b01e417f69d736e686ad94f2d634805fcaec0078facfa222938", BlsPublicKey: "ebeac291a8d337ffbde4ffaf1294513aa8217ef575b34ae9070c6b4980cef3e3132d3a7508728fee2ffebdefa88fb780"}, + {Index: " 280 ", Address: "0xC6D0B4180A25d1A7EdA9Be2D8eE9dd0D41d2D75D", BlsPriKey: "ff7067ff7e2b3ef52275c5187a252ba5b95bf04d9ce33c4fd723c11af8ce304f", BlsPublicKey: "590d8a37e888dccdd0458f3ad8e7e4b8400646f19423c867117a23a5acf48928b5c6e6590ce198fc876dac37cdedea8a"}, + {Index: " 281 ", Address: "0xC7D97FE4962F3990f93421a26a8020EB0898c5e6", BlsPriKey: "a92bbb938ef4d0de6ff8f7da5d0b2a88ff812ad67c7cd574235130f8380f2343", BlsPublicKey: "3a031bed7fd76c6b086befbf017c9439ba905817506f0a761c5b522cdbaa3397107ae06ea16b9f8a7130233b53c88509"}, + {Index: " 282 ", Address: "0xCAcd563284f44dAb78CeE1E1BC74C07042b414Ec", BlsPriKey: "3136e40ee1d841c52ee28979d3bc84376f68e026ddfc2cf07e00b581e95c9b12", BlsPublicKey: "b815b606b1be77f9144db7e9d252ced9858c0c47617e9c0bc7dec96f567406e8220a944008d1c2cf8745ec782494ed82"}, + {Index: " 283 ", Address: "0xCB4c0864bBD5921E0Eb7951Fdf16E7Bb2607542C", BlsPriKey: "1052993a58b6189cac6290f5a14521b6508100f1f3e37918403bb3857f15ad35", BlsPublicKey: "5eb095bbc7642d753ce155289bb291226956aafe4d20629d6afa794c4d2e1cbd131b4d7f9b11b70db433c4ed335afb93"}, + {Index: " 284 ", Address: "0xCC332c845b6Bd7d28a5C54a51D5ea32C08cC2369", BlsPriKey: "b052b85b2998977978e6f217ab9a17dfa78c1644297cf8e33b9f0e17a5a4e244", BlsPublicKey: "18dbbfb5e66a4d3dd9e418064d8e1129ba09088f595799d0cdacd4fbe19b566628ff1f1381f8b3a14391d7e5ad87958b"}, + {Index: " 285 ", Address: "0xCC831ce78Ee204C124a7Cc1A5d55bfeBE58E924B", BlsPriKey: "275be409a230e99a4e69b128a4c5db7c3ba966a3cf7da65df5a9ab095939771a", BlsPublicKey: "883a82c7feef7c7822f57d3f14c2f5520fa749ba017d01fc82acee448ed8629d6315f9d00f3620252b0a1a469fe58501"}, + {Index: " 286 ", Address: "0xCC98Fe686F3Be69566F64F550E581Ee97647D8c0", BlsPriKey: "5e3c04dda0ebf2dbb75a0ccab9ca1487d543a6fecdf12ab909450e4ffd1a093c", BlsPublicKey: "65983d7bdf52e8140a62c64f3bd96d009cc8716883923eb25af0e1d22ff77dbd0ce42e1c915e5acd5c5def5b486e7b8b"}, + {Index: " 287 ", Address: "0xCCe50309EF9Ad3EBA4fcb822Cc3878c5485964ef", BlsPriKey: "26e607a18e886992872ecbb9fd5b287991dcaca845c376cf9f507cf1885f1013", BlsPublicKey: "2c7fe5b18fa03f928fde78041d60c3d354675be0fd7fc61191e61795287ad9ed3352bb6af4574689a1351f5189c50589"}, + {Index: " 288 ", Address: "0xCD929182222226982c3CB45D98Edee24927F70A8", BlsPriKey: "5c613bdcd9db8a6bcb3b2195e9af3b9f60ab1280876c8885af60d851f50ca85f", BlsPublicKey: "d7a859538b16667144037da390ddadadf4c663b5955a4b03bb3db16a86d1be26fa221d79a6d97c9340abf098fe1a3b89"}, + {Index: " 289 ", Address: "0xCa6Cf168c91bb6Fd5C7fB224b567Fa390DB0FFD1", BlsPriKey: "ce5c3a5f6b37c9f70489fcb43697866a54792f0996f6b69290a342ac138b876f", BlsPublicKey: "4ec1467074e35ce3e4bd44beda122a1a57f912cc4a1bc8659b41a637c4fad63558a8ea6a0880d6cddb7d414351241589"}, + {Index: " 290 ", Address: "0xCb1A498eFe2eA5Ff136Db7D826b1429a2702B9AB", BlsPriKey: "c60a5e08ea12388f365f4338ec2ea26b85eeb289b152c00d4b7f7ccc5f350157", BlsPublicKey: "13ae6058644ee2c959cdb489d8f8c04f9c593cc202033b2ef4e4c18bf327ef563244af72329196196248d5150a3b6c8e"}, + {Index: " 291 ", Address: "0xCc4f14C63AA7BaD2BFB612186127C10793eC1F58", BlsPriKey: "c1901760563059ba9c7c541f2e4ff0f31d161dfee9e471c004620cc8eff2352e", BlsPublicKey: "116351a190934c36ab0bbef7fedde763ccec6b8dd2888d0c5a4613f6674d732b72d8c88e8db6979563603a04cbd1bc17"}, + {Index: " 292 ", Address: "0xCd5B0539b872914bDB4d83BF4A49131CbC984Cc7", BlsPriKey: "7972f3e1996d7d24142ee65995e289f2b067846d2b39fe549d0d39faa6958f6e", BlsPublicKey: "d6c6a630e5a6224bfbe287c00cb63486f2d420eddac02b0d3650c127b4145760148a38ea4eefb18eae465235ff3e8192"}, + {Index: " 293 ", Address: "0xD13C3b87cABc9bc3E1C33d59780c415ffF0F6454", BlsPriKey: "96cfe59ecc3853dc22e0c0e956bb325c7d0320b2fba6e81ce02b87b19023861e", BlsPublicKey: "647fede0d5d657929811726c302c2a83bd765c24c614dd52f95d2c4e5ef654ec190fe21d761fd9ae30476babbcc6e308"}, + {Index: " 294 ", Address: "0xD1A3bBB32805bdAcEA7509BE202972be13e12E33", BlsPriKey: "376b3ebd744e6eb06edad9682c61df02cf38ca3ae5b0e6fefb40dd4ba3db4f50", BlsPublicKey: "246c029566077a991b3f7594f9a846289d48d2734ec7e1b951ba117853eedc7d72992a1a5944563f68980120cfe1f993"}, + {Index: " 295 ", Address: "0xD351CF869089ec9b903d7e9Dd13d9E1fA98Cd9CA", BlsPriKey: "20f5901795c4183ec720e98c6051dd766e756a6492ab41d8abd92a680f5b8c3f", BlsPublicKey: "08d4190a22bb17e2979f44570eea36de54af4f6572ffe4bf53ef5b1731b85c78d26bb5c99b9570abbb96e7ce15ed368d"}, + {Index: " 296 ", Address: "0xD36077cD3160A5345F1a9A65BAE04fFf811B987A", BlsPriKey: "029777244961fe254ed4d3088b05870ceefba3afd92956a71caad19785665800", BlsPublicKey: "087ccc905809c6c88f6662af02b45c199f26b129fdcc3be3e04f331f9a60fe62a5f6f40856ad18059d677f4bafbe0c18"}, + {Index: " 297 ", Address: "0xD420759A7B75F797B026d5eCd945611f2d1075Ca", BlsPriKey: "de6542932cc07389348517a662b99f8383405cce72afe874c37799e77ec94541", BlsPublicKey: "07df94984a9ea2a7a185b56f4173a433326e57ddfaddecb9af906e90f41c908427d7e17f759fda68996a6f01a344bc14"}, + {Index: " 298 ", Address: "0xD716df51d645aD7E3a59539d45Dc632ec6513aD3", BlsPriKey: "90ba889861d1bec1bedddbb691b233da0e46808a9571bf744adb9e1b4e65d45d", BlsPublicKey: "ff991461a7dccc1d4a7f4cf698d498dd5db9dd229a43136492a25939a4f971b8c387f5cf88a5f5031843c0bbf9f5da98"}, + {Index: " 299 ", Address: "0xD905Fed0e733CADB51496C1CC0A139e20fEFD37C", BlsPriKey: "302aafcf433a46ecee87d466ef61af8371d9c466d779a33b6cf48c4557c38837", BlsPublicKey: "6eddc54839fddf964abd9c310b82f7faee6fd0b2155196253a4dda99ee8ed804afa6eee7f5ac8531e6b2651eab9b0e03"}, + {Index: " 300 ", Address: "0xDDd3e231d0CD737E82d080DAE41c3A4B087E7b8b", BlsPriKey: "6f7c7ff0fb3c474abf835b4303fe2d557893846d7d7addc4be3bc7cfb5a03205", BlsPublicKey: "78e9992561a1a2fe8d742cbd65178bcf9eb0af80e811eed3504e394bc6b98c20ff7cca6d2aee9235e636cfd07af7d78c"}, + {Index: " 301 ", Address: "0xDa4CE4A006A2b5EE7c1F48B2780fedb39a509593", BlsPriKey: "fa46f9ad6245c8d9fcbbafeedd7c7fba79ccdbd1151a234ed4ccc270b6e2ec5e", BlsPublicKey: "21a5f508bf3a4ed5a5b24c34c7f3b1252c1d25ba3e39ae7cab820436f47caf80683d95ccb4141830fbc9d55a84376380"}, + {Index: " 302 ", Address: "0xDb04208A0f67A3C1CbB900baeC864369c27B182F", BlsPriKey: "28165dd35613e3289795130eedac62f6e67baad6e9c16ae7d953854251cc4e69", BlsPublicKey: "982e9ef927326375d81517a1a682eb2fcf2b85247ee518b258c7aca687b318e42268c17bfef242a47b3da13229bf950e"}, + {Index: " 303 ", Address: "0xDcB67CB0CAC26bA013C7d6cABCB10920e61eCF70", BlsPriKey: "ab2ee4887e4570cb8b97ed97d8d8de09883ebfc93b22fe0302d9f893e58b9117", BlsPublicKey: "cc48f30a49b47ebc0c31e273b3896216a943dd2764ca1f10d8f260375789b223659f7ada07a039cbd6ff81e471809008"}, + {Index: " 304 ", Address: "0xDdBe700758a452F2Ab02BDe237ff6Cb1fd39DC91", BlsPriKey: "2ea589aa0fdfe43627807757c2b9fe2a6eeb64d92660fe891afeba49b0f3d873", BlsPublicKey: "6d93c7655ad39cdecda286cfe320cb60ff3448c224905fb53a56941c3538148ad964654d01c6d37d7e5fde60b746368c"}, + {Index: " 305 ", Address: "0xDe6eD0AbBcfF62fa956A39215EC452352f71FEf5", BlsPriKey: "f101570484436da7f79e24bbb51566be154657f11fb05e3b3c0e476d6ed50624", BlsPublicKey: "1daacc1e4092535fa7af7b01ec3fca3ee94b234582c418ee6c323471bf5482fc848c026df7b5f31f03288a4e2b8a5904"}, + {Index: " 306 ", Address: "0xE0Bc6F5cf7Dd5795998D46d1Fc85eB9EaC873eEe", BlsPriKey: "f1e43f7dfeb8bbdf00d57c08a134724019566caf7c3c8b176d03f4198e52643c", BlsPublicKey: "970d79e43bf01e75afb020da3ae2160c69f84368044e66a92fc846d671598c2a9a028a57bce2b234f9610567b1d7050e"}, + {Index: " 307 ", Address: "0xE0d9D74036D37684E36cBb76Aef8563D58D229c9", BlsPriKey: "f946b7537a57f19e67ef3c2d5346efeedee7a19f556b7076423050b1c496ed50", BlsPublicKey: "bf73b5113537feea4a6018db7c70e43b2d305a66d8494816e1a4992e71a3ba54a3c0ca3b6fd56dd98ef6155a165d5b8e"}, + {Index: " 308 ", Address: "0xE190B5677915fcFEDD1d075E28C1dC9AF3F4aF9B", BlsPriKey: "b1644210d93b61fdf5e0f48b6e67daa5d81fa683e0db7ac9d39dfea344c5156d", BlsPublicKey: "34efeb60117712b247284985dd99ddbafc02fb2aa9e96d432a96e3685b96f9086622136aa2eb71f35e045dca482aca00"}, + {Index: " 309 ", Address: "0xE31f391363F2f09B4c7BFc2b8F797Ab5119033b1", BlsPriKey: "a8aedec4d58a40a39b0b49700974ec346306a86e681732b841836859bbe8f323", BlsPublicKey: "5bc1c17df004e4131201098544eae25b59e2bbab8190322ebfa30eaceab04a2bbe5701b26782f945fc3d02d6a2651106"}, + {Index: " 310 ", Address: "0xE3B7e3163Cb5646C3aB72233e899ebeC1a677f9E", BlsPriKey: "c79f209402322d85a6cd333648f8788a9d50e97c91ad9e3fc579a08d3c3e6601", BlsPublicKey: "a5221d9b260d2ebf552b071577fd581b3f89046fa9afaa5af5f68d3c801ea4949d9db4d88afc5eb393902e70f85f1616"}, + {Index: " 311 ", Address: "0xE62185a7fEad984F071A7C4bC88fF5548b8a703c", BlsPriKey: "3ff68d6ddd04a75dd69215ac8d900025e75c1c0b68c794232f6030aa754cda5d", BlsPublicKey: "8902535022aebd76d3c2172d084076d9ff385aa111d50f7b354a68af529c42fa0298c35b725ad34ea81647139828b205"}, + {Index: " 312 ", Address: "0xE64dE8594090cf41a7c63353faa3A6fc19e24134", BlsPriKey: "4dfa080b507704e15be43e9c40dcef78058a5a78050620c13a49efd087fadb3c", BlsPublicKey: "9fd2c7323d3d4573008fbb63e29992bdd462635da9d90cc6691b08f887fd036ca2a9bc9b25eaa9176e52923935186503"}, + {Index: " 313 ", Address: "0xE6F0E07c91F3f36e469b6bbbBEd5aAAFE36d8Da0", BlsPriKey: "296bb9d85b733084c568b546f73fe759e3a3da106c98ab22fbd343ee356b6750", BlsPublicKey: "be4553f8771291fcc3759c89e680d709542cad234bbbc28cbb43803f1c6503d38c606534edeca63c6765005527cbfd96"}, + {Index: " 314 ", Address: "0xE85ae0aD9d135AdF59f578e167e83C9024139cc8", BlsPriKey: "3f7d6935cfcbec66a13ce714f6d3c2aa27a3f76f4b157b465b90e564f6d4b953", BlsPublicKey: "2c0a8271e191fc640fd24bcef0da7eb1fd2cede98faaff2c8f922a8927b13a7692223ea0d6a119ff70b2c56fa803968d"}, + {Index: " 315 ", Address: "0xE9c5E4E5356C43c0Acb6315B99EE06b9a2444671", BlsPriKey: "b09f3973172e3aee0b9defdd7f244532b0587662c7154c515f4873db778b5937", BlsPublicKey: "f49ea2e90a02594b3527aa18c79d77feccdf63b9f78b57b642afd008c112830db3533dafda24a60b2106f9dffe97a508"}, + {Index: " 316 ", Address: "0xEA7C41f1BbA4376A39ce5c01A51F3a4a3e5A8ebD", BlsPriKey: "ebf10e118df6ed2ad394c980fcf9ef2957feef6e56ab13f6d1a6ecf34257be14", BlsPublicKey: "9ba1d08469ff284b33ec24161c74dcdfa0a6e1c754dc1498eaab9b4ba7a110071c2740d406b050353fddb6e032b6ab18"}, + {Index: " 317 ", Address: "0xEFa188A4765422f95938de1e3FBDB7dc6FaDDC78", BlsPriKey: "443bde844316931cc6b2f1df2b095251ca1d7465d6dae6cef4767b064efdbe3f", BlsPublicKey: "4593227df9440f94f53fc2f1321d9682fc7577f7c85c349fca3bc1242cc04f0cf1ce5c55e067eaf7a95aed6b0599db99"}, + {Index: " 318 ", Address: "0xEc616773962E7094295F0F31D416748747535E37", BlsPriKey: "f3f8ecabd4c68b5a6502fe769f6cdad030ac8dd0cb2be5970d566bfbc182e847", BlsPublicKey: "3e79bbfdb5c896cfde4e1425a36368703980fe67a5e377eaed09c1dc2a768cb51d8957d8bcf2c16e4b6bf6297c34ac89"}, + {Index: " 319 ", Address: "0xEe406e757d1CC84dEAF3696A5C9f4507aEAD4794", BlsPriKey: "e72e7353c26b8687dd821614a3e60a7a4e9a180557868a0fa377df6d29db6a07", BlsPublicKey: "26f62028e1787b6e953529ab3aa96fe0de3954b080303d82b58e38319c99f146fabcff94cbdc25703cd04f7e20618f0e"}, + {Index: " 320 ", Address: "0xEf6F999b96f939597EfDa9e19Ad02A7Fa2b1aA20", BlsPriKey: "0534cc111c7cec80a6ee6d35fd851bd1cccaba71bef561d1820faff0d70d3336", BlsPublicKey: "51557de64a45cf23c01a01c98ea59921adc3ea291f7c33febc3a7271489c29ffd2979d937c2a546823e4dd38a935ca08"}, + {Index: " 321 ", Address: "0xF3c55A45c03e17efB0A50163e0aabcB70648848d", BlsPriKey: "c335745a75902f1e2e6652645852ee1de5ae55a815f39742e6538325a693063a", BlsPublicKey: "a651e937499826502ed45c8a93b920c0068d2b0e6d7f4d5d0bebcb7277aa41b80540ac0de42e2f28a29977970ce5b206"}, + {Index: " 322 ", Address: "0xF6C5363A8E2C792697B01da8c0bC8cCa6668bdE0", BlsPriKey: "077415b86ee60804707ee3d1c82e1cd60cfa0540f2824874e10d8c5371b7bf17", BlsPublicKey: "a9ef0cbac43c7996f4498e6c37262aeca86e817912e5ef71617ac183a5193b9e2d25e5824f1a51c1b5ee0d3512355a07"}, + {Index: " 323 ", Address: "0xF97C989cc1D31aBdeE222cCe7ED8A3a3e4D45A2e", BlsPriKey: "03fe1e82055c75dd923856de914b0e84a905731b05fdd9db5d3241c15339e330", BlsPublicKey: "65ea54a424c1ceb628944e7b82fc2a9592bbedd99d5514da756e64beb23e611b10298de21b5a3d1e3de9b318ad43cb89"}, + {Index: " 324 ", Address: "0xF9cc6BdB428b23e1f8485aC95b22f8D93FC5a425", BlsPriKey: "786efb123c35c56150bdd4dcd5dc0299e0f02fe3c2c156b26728b37680166337", BlsPublicKey: "33e5978f59ab019c2dca5745f2078779500663408858187473d585a129ba107de671e576930ae79c4296a44e034e5b0b"}, + {Index: " 325 ", Address: "0xFB48d5809AcBbF5C350a12b955c76CE5bCd1c27C", BlsPriKey: "10ed56caa7d51a0cbbf51e3a82c660aa9f286a976ad35ec2f3977a54cba83864", BlsPublicKey: "29459f870aea2abe2e8d0b8f4ba9bce83d7ea725c1f051a55450ed35ca28491b51719c0d9587d423d1f637e7e55f9712"}, + {Index: " 326 ", Address: "0xFBd3b6Aeb408FC2a99d82786565a9C981d63Ef0E", BlsPriKey: "d5da84ab77b48dcd4b1c403b5b7f710a4f589bdc2a645b44765509fe6a9e271f", BlsPublicKey: "e8fe7f669e7052ea5afea00962bfbea3dac0a853358378cd99ab51803a58eaecc17d2892b65b27616dc3e568300cf387"}, + {Index: " 327 ", Address: "0xFC5d56e8f45F7D918b429ef9eCAEF439031A9638", BlsPriKey: "dd4e51fd7eddba81d8cffd255b227ee726edad2b17f6b2a77e6a3ce5b01bce2f", BlsPublicKey: "d29ad09c2dcc56d590f6c302ab833854ca614e39e2c07dca03d23d6382a10cf902ffa358c78fb0a7afe658b544a9cb87"}, + {Index: " 328 ", Address: "0xFc0cC772Cd483ba94030F7Add507B5Bca80E9a03", BlsPriKey: "eb3b5c7972dd1037619d0508c61989c4aab6fce120a668e7a1820e853caa3762", BlsPublicKey: "48421571125903ba2e011af5e9e1ffe421bd50368acecc08545e2f5bb7d75eac03cc5685fccb9e52bb7919f620b40188"}, + {Index: " 329 ", Address: "0xFfa7dE5ef5774B1211328e7C40A8030af69872A2", BlsPriKey: "755120269b1c7924321acded089552ad4e777949bef3a62c6c107b54dbaf203c", BlsPublicKey: "16600d15a26a23746b13b304cc221dc80e221757114b6f635c67ada7e531326de001c3b511256592d82548410b71cd81"}, + {Index: " 330 ", Address: "0xa1aB772E82de47DBa2Df2A597729716e055f13e4", BlsPriKey: "ca18679cb890e66df88607bfb521fb7352697dab15d2c43fa679aa24f3850e31", BlsPublicKey: "b55757c27e90fa1f8a92f4ea7cb842789673a7a54fe335bda5812128295f0572dd4ad5ff9164e33cbc79f762ddfbb98f"}, + {Index: " 331 ", Address: "0xa525D0E0408B22Ac4C88ff5B1b18F6a04F455A9d", BlsPriKey: "a02fdb8690290a625949b83ed3af73a446fd08859dc1db4105ac6fd0cecc1f43", BlsPublicKey: "2914b1290dc499f1e4c2006018557b22135009305b7d7992c7a986b7d37480c84c03e3442fe824d96e0690c3338d9d98"}, + {Index: " 332 ", Address: "0xa579b6d75Ec067A3281348319F16E8cd23f9e6eE", BlsPriKey: "1c13529c3cd5027209544fddfe97c5d833ee84980384b974c549ea11ac7c7336", BlsPublicKey: "18453b0f82efb8270281afa12852d96d5d88d35715c7a09c8eba2450b071da36aaf2a2524712cf9da456dd491491cb83"}, + {Index: " 333 ", Address: "0xa756b3920807ef8F5b356dc87204FE326675fC3e", BlsPriKey: "fea117010c95ef67ee1002f1fad8b993fae49385f2e75a6d961cd7b3a0c55f61", BlsPublicKey: "9e3faaee477ef7f5942f0abf148669025fa06b47158aa74287f872df84fdffea13ecbe55e00e6d63b2cbecc8c1d2d88c"}, + {Index: " 334 ", Address: "0xa816F63F1375d3d14Ab3CCdEF7856E29c18Ab574", BlsPriKey: "11cd72b5692fc7053447940b5d372d4eb422677f445f9c9e5f6f17e0bf2ffb72", BlsPublicKey: "6380e4fc35512c7e9c5ac3d00566a3632fc78fdb96e600b18f1ed48a4db7f68ec0396222e33380c1dc51252abd9eff82"}, + {Index: " 335 ", Address: "0xaB31963011e61F6c9c98f8332fB6788C6843d284", BlsPriKey: "c7a57abf43b873cef811cd8164164275688b0b02aa67d223f5b5999382d8c96c", BlsPublicKey: "e2306a06ff0578eb8e29c8ae554def1414946a620fca99f5964113fe89374174c9d47610006f08bc4ffd785706df2286"}, + {Index: " 336 ", Address: "0xaB9c949A9296172b6AE2b87fE5a87FE20758A59c", BlsPriKey: "0ae12b18e7a5026316411f38d4cf2c827f50a40f0cc37e49d333658e9b388857", BlsPublicKey: "56282dea5cad7a76a70b35e3112017d1305b27ce731645dd2298c3cea145b7e8286a4bffb11ea3d35ef44361d9950199"}, + {Index: " 337 ", Address: "0xaE030b5785357a5686Ed9b89EF2C0D82a5AA4650", BlsPriKey: "f85e74c71688698d49242c048d58eb28a1809b84f37703a05114d1583295086e", BlsPublicKey: "196b807466b953d44f6c3e97385751f77c9a41efee26ad1e3b3cb2f6cf66326d1d5f682710bbedee386de9d5cb91fc10"}, + {Index: " 338 ", Address: "0xaEBc085A0AF631a81486b680F2334369DB2c7bB3", BlsPriKey: "19d94d05202e91bff432c2fe16badc5756241f60a53ca13950f7dc90d5780827", BlsPublicKey: "656c668764c48de2deb79c90bb62f57f093de6b72723122c383846f8c2c7621653a8314a80a4cfaee450c263a7521a80"}, + {Index: " 339 ", Address: "0xaF4a7499aD01ef627a9985152711ca45d0E86B7A", BlsPriKey: "31e1779c8a253b98fcb8273e2aa24ff2f6f5900b172065554676519bb434676a", BlsPublicKey: "475cfe574cd5f5d5969cb012a5c5961b2bf052cc5b6eac87b27966602683a5957f99ecfa9c5579ce5fc301f67ebfc114"}, + {Index: " 340 ", Address: "0xb09490021A24F17509AdeD7A59141E9f2B15Eb68", BlsPriKey: "d46313491f0607c9bf2605fe0af4c64e2e01d50e88327f33733d88262788f426", BlsPublicKey: "c59484689ecd944a868e1f736e5d0764f9357cb484b675d9f839b23eb159701f2d651dd46196d776b22e98ae3fe09003"}, + {Index: " 341 ", Address: "0xb25D4f96f06513C851D65f6bED3D9ac0Ce4699B2", BlsPriKey: "c6b3bf419c80eb970e5dca990ef54d1ee552d97a128e83e80e4c3bdc9bbe0521", BlsPublicKey: "7ce6ef33d0325f50b797aedcbfb24fb964a7e800bad5790707c41780bf300efc06805abb4657e7a012f4e11390f4b50e"}, + {Index: " 342 ", Address: "0xb25F57695D6541f712856aEE545aa8c583E153b8", BlsPriKey: "8a663d5cea54ffe3939147b411b8683da36b16e52a975afa0cddc196297ef93f", BlsPublicKey: "c904f79de1977694e3c5cd2a365dadad1842f7362926e9205d556aa314e77746b08db9da194f57dcae7894b068b1f316"}, + {Index: " 343 ", Address: "0xb4453086a8b623905743c083A49F60821a1C3a97", BlsPriKey: "17d985fcbb28ec4b48c3e01ddf6160db7dbaf283826715f3327537dd982f8b19", BlsPublicKey: "44e9f3855c87f704293e996656b3d18809ab10950a9d721a510c399322800d528f59d1eb9196470dd81b3fcf80988494"}, + {Index: " 344 ", Address: "0xb69FD1866215B8d6a6A1f99a71ce565b654F0156", BlsPriKey: "1934fdaf900e201a005a78d8b4580fb1955c6349b472554ebbdddca3e1adb51f", BlsPublicKey: "8fab0cbec7a63f8b46a3dd43f7371ddd3104b42683535ef75a9a00c75281f01cf0f1ecfd529488d83939a6d2f16fe98f"}, + {Index: " 345 ", Address: "0xb88c75b52BE0Db22B1EaBaCc161a73E465b50F00", BlsPriKey: "f6180b90bef1d8781eb06e82d586e4cf1430d2a7e5671bc2dfc654701a3dce72", BlsPublicKey: "58a8362bb7c4a6f2e0c0a8b92b79adfda3d6ecec129b3134b4f8707507c275d540e299b26674803f92cb028f6eaad395"}, + {Index: " 346 ", Address: "0xb8adDC78d695F532DDC2c8891842741bF6b627C4", BlsPriKey: "380dbcdaf8949878094eda6e7c89da8a3ca61cb78ed9a108caba223b4eb84738", BlsPublicKey: "8619199f4c6f2dce41a45378d7c072977edc847980cdc19da9668b111beedfe4de0ef8e965dc0f1cbc8ea0dca56e8596"}, + {Index: " 347 ", Address: "0xb99C7D8F3D2D542025D8f45E21FE83a5319422EC", BlsPriKey: "e8a67ef331e2e65d756020bc8e6642a1c7d16619cc71ead0244d2170dfd7cb6c", BlsPublicKey: "e223e182e1eef337c5db0a47defb56d51ab202d1c9a8f8bfc5cf10215cfdcec9436d265d597855d8e92b1983b227d601"}, + {Index: " 348 ", Address: "0xbA30b84b8d0F106d936Af77D93C6653116EF54b9", BlsPriKey: "24f125b743f65fee238f66874c59e1bbe55bee5cedd8608547028a3241ec3f56", BlsPublicKey: "8bf026848b998d1eab8e26454fafc0490dda1e6ec8452778335963a819581ac76b41af680c628fe4616b01f201d57a91"}, + {Index: " 349 ", Address: "0xbB61Aa32EAab4f5C0b1D66B3649aD97D9836576C", BlsPriKey: "cc15df81b05c0f5d06b291eb8ca99bf0b579a0c0917805f4a6ad2c3a69574463", BlsPublicKey: "c29a82131c5fd2cd6237992f3d8c684ecc3ba370ac5fbcfc156657015d008130d526eb7b13b69d9ed467dcedd81e4094"}, + {Index: " 350 ", Address: "0xba155CD47eF9cF07bf9140721af95ffB76D4EE8B", BlsPriKey: "81f0d207c76b2b3a1e2966959bab28ef967003920da3ccb91bad2d0057e2c118", BlsPublicKey: "626d7e169af24e3749c99812c3524679fe7d996203dd7c18f5a6619ee4807c5ec5eb4ddf0bd4683b5de82c7540f46095"}, + {Index: " 351 ", Address: "0xba98270b18E72A885370567138951af6CFc06d5c", BlsPriKey: "710bb91c90c9a53dc6d2aa457e99a09751721d4d511316dabb5232751767883d", BlsPublicKey: "e381fc365961950741766ea6da1b98197ff8669246a9202353727b385039006588bd6f85e51597225ce6eb7e41630605"}, + {Index: " 352 ", Address: "0xbd1Afa5FB3B24c50A50f7a99A252517e1EDb6E14", BlsPriKey: "7e5c4196b26f497b1a91fda76eb24e4d7d2bf16742182201f2cb762de79f0a34", BlsPublicKey: "f25e218cdd1eb040f03b97f1c00e417844b5e92f358162efad4420950f62dbb5dfe75fe589c5217352122616ac330b8a"}, + {Index: " 353 ", Address: "0xbd9711147b5d809B38650626be865F017B91eA63", BlsPriKey: "b5f5a775aec2f18445277980e2a5e97c5826f2ffe463f9e6fc2be13f3a6aaa29", BlsPublicKey: "5b8e90e5031b160506cd15a9674986439421b0e3b430288d700b3c6e5c9ca709e9e856b3738b196b5ae3400098ea1c01"}, + {Index: " 354 ", Address: "0xc0BB4aA4F2C15c0fD86e84CA8e7aFFC9d6a1BA8c", BlsPriKey: "dc2eae2c8d25b09396ba6dbd3eba7796b761274548e362a06c152b9bcb48782b", BlsPublicKey: "b74dcfd3c22e274a033883cd2fd9ae801de7d5411ad83d2083b4037afb8a6c0ad5126099913febfefa576197cf4f4306"}, + {Index: " 355 ", Address: "0xc12953820Eaaf808c0181de242b59a72e3E55606", BlsPriKey: "5ff684b09775a9207ef31faa4dc2eb31d6e4541ee637668ea8ae33213890656e", BlsPublicKey: "643916b23954cbe2f55afc08062cfc3535acf33d82d19207ef1033c320cb43fd28c83fcb51c83eb55d3428457ec68717"}, + {Index: " 356 ", Address: "0xc129b78786Abd0Fe6307048A95D38D5C22e03732", BlsPriKey: "5f0473fe9d8a65bbbedc02695c8c74ae6a94abe9bbdb76aa03aa5c381b999641", BlsPublicKey: "118092f584f55f33d00fe122d0bc349b81bd1fb0261744a25cab47bf73e931d2e721ec3babbc1c790252897283491003"}, + {Index: " 357 ", Address: "0xc24693350F83C446A1A65FD29b12D144600c8A56", BlsPriKey: "845bd6b32b88ba9b37a01a810e7ff155fcaf457475f323d4fe64b8afd2d29769", BlsPublicKey: "d7c90fc4a7b0494b16e01cbd3b50489f19756c2d4288c0d66b7c85f95c2460611a3454a3c460720c1296b53b542b8b0b"}, + {Index: " 358 ", Address: "0xc2b1dA16bbe3F9106e5bf535Fc7458419c98D102", BlsPriKey: "40453675a9ef8b39893be1053b2e6a019bb57259f5af6300a20944cc14007806", BlsPublicKey: "0fc8726b836fd0162c768e751620d1822ff6ebbb88897e87adaab4fa0ef116ae0be26c026d88190bb50ed768bfc55b00"}, + {Index: " 359 ", Address: "0xc7B8417d78cA2d0833b0016e8E12f8E5679a44Eb", BlsPriKey: "c7e577f1b5fd322450d04176a4d8faf183c6ab16c6736eb31716044ce07f5434", BlsPublicKey: "125cad7abda26990cc1bfb1a49f2cfdfdd3e6aade89f25d6b2af306dd60564e67f7d99eff358744e857bc980872ce817"}, + {Index: " 360 ", Address: "0xc7be7908Be33a58c08FBc5FD3f06b1d4B7781641", BlsPriKey: "0c41279009ff436c25660669b0d4a341c39f81c281b73e7fee6278e6b9f4931f", BlsPublicKey: "588515815920868307cf90ca3332f4a05a1b67629f35ac0cb765b48dc239c4dde73bb4530f0d30379d83d4534e200a08"}, + {Index: " 361 ", Address: "0xc82204e189EDF63807270d91c6bAf1d54ABB62B8", BlsPriKey: "621495b05112ddd89e6c7622f7126e1abee9cd6574d9f5ccd2615ad77e60fd32", BlsPublicKey: "e1e8f34b3e7493b9dbe07fa90258db7dd8272ae9c90a31376def21d367cdf679fd6220520b8270387b00e49c80d79082"}, + {Index: " 362 ", Address: "0xc84a3D4461f5a2f216D488Eb4F4852f523Aee385", BlsPriKey: "3a9dfede3c1257a04e0ad24d49f5c3bc369c200cc443bd4922448af21e176145", BlsPublicKey: "af8b247f0eff1c9f10217455071bc49a9e9eab8907f93c15acbfd95fda4cf6bee85b7b62f1a1785145581ffcf4bbec85"}, + {Index: " 363 ", Address: "0xc9dCBE9CB27eA03fC1c57d1B4b0204a3E9bC8Cb3", BlsPriKey: "eeaa0f8ec12f30350ebad93c657f7e477a1d3a9bbc05a465d0f0dfcbd73d8818", BlsPublicKey: "99637d73b2f551741e009314264c0c8e2686bfced1c5b12ffd925c2b78512a6250bbef062dee1d93d4d503b5adb43983"}, + {Index: " 364 ", Address: "0xcAd114c0d8B87367cc598A4F13eEBa55a86C5F06", BlsPriKey: "ffbd4893603e52cb0a3f79befe8d77d073f8f2fc3c7f7ea9dcdb7490026c3f3a", BlsPublicKey: "a5f4826154c1b28468505d6e17037b7e25bf55d54dfe85c750bc076c6f5e3b7b1e469d7f4e962665a39f1e31442fa019"}, + {Index: " 365 ", Address: "0xcB8196eC986DF4DF027fF7406efDe74D3549f192", BlsPriKey: "63f6b639e4f88a614b73078ce1a2c0d9bff3803e05f1fce20ca03e5d5c069d2a", BlsPublicKey: "92dffba72428437a7bfe1431d2564b8543759181b6e6b64422e2413b7a5b3beb943e61bef7d1daaccf6e5a766d6cc20e"}, + {Index: " 366 ", Address: "0xcB8Fe1D1ae31c09B3EA6D18A3680E00004E54De9", BlsPriKey: "e1137db2b6ccd06d60efead17b5f6511918f11121312fd231a8bd7a64d50f03c", BlsPublicKey: "f2da480dd908c5342e7a9771591abc5c338034954c89528fc40fa11de1591c7101d977c7b132111bd6f47efa226c2594"}, + {Index: " 367 ", Address: "0xcE1f3C5f4Ee8759fF451286E90c156976BEe3742", BlsPriKey: "26c9d1456c2e8831b036e7064d453ab927491bc2b6050b3128ade03b7a465541", BlsPublicKey: "44de20d72360ad6c858910d9398155a106e19786a9a375906c3cfa0b29cd62998d84653caf5349161520d85e94b53491"}, + {Index: " 368 ", Address: "0xcE319c2f6c4745b0D41530b55b1Efb09392Fb357", BlsPriKey: "cecd4d19f71fced3e7f1c111865bd932c1f207676b5055445ec8003fe40b340d", BlsPublicKey: "3c58a5c8b87f2b066167a81e2fa1dfa1c2098f4c9de6d982ad8754638918d38371e2c9c1df5a1ee4bbbb27a22de85692"}, + {Index: " 369 ", Address: "0xd16fb86Ad95B25baDb44092129cb6aA4FcD0190b", BlsPriKey: "f0a8a5aa85e83f0788ae32fb4a0a695bad7e624d4e958ef0dfd7aedd51e77961", BlsPublicKey: "4c6fa76c43718a1c2151925e9fe5b9bcb25c50126ddf963b1f84358bcd855e0542f7c8ec4a45511804484f0a1e736a88"}, + {Index: " 370 ", Address: "0xd20331D75CF373ee16547Bc00b3b71a283187A31", BlsPriKey: "977ea3be3b10801c2b89a3d7f45f950c3d0edb4d01bba2f777dfd485e898c047", BlsPublicKey: "c191fc214bbefcea06cd32f67bb7fb98d752d45add37715f7461efc66428aaa57091a47a91fbc29a33ef0d2fe661ff8e"}, + {Index: " 371 ", Address: "0xd24640d8fDE68cBFDF25C41613e4B593dF1F7845", BlsPriKey: "7eac3dae78aaea403c89e3c8b1630f597cae73488b9f3c32b260758733738b33", BlsPublicKey: "85eeb31b3746973f42c77985ca88faa129a153e1d0e31d4dee764e6ed86c8ac2097656a28d1a3c5eb14f3350d5a8a195"}, + {Index: " 372 ", Address: "0xd2ab9e42DbFd509dfd9Ab937Ac875c3953Ea6B63", BlsPriKey: "076726a23ccb51988c4654b72a63c86ee24cc123849752432cdfa80001834d34", BlsPublicKey: "e2b285011586d8ac571e3040b655b72732bddeaa5ba8133c04500d39ce0b0616f311b6d9dd870c659b1e6e462d54538e"}, + {Index: " 373 ", Address: "0xd41160791b8886F8e45ac1cc9ebb5FB9c7118fbE", BlsPriKey: "dad7d3fde948299c0dc8b1fe1776aefed32b1438f0ea5c94db51d051bb61e94d", BlsPublicKey: "f831af8d1d4a60cb96126ee2433206ac6f4a147eff9f01df5bd1c1cb333447268952667a70271c98da8879b13fe53f0a"}, + {Index: " 374 ", Address: "0xd892C406dCB97B544cba6354fD42C18c9175d8DF", BlsPriKey: "03e42e814506c82ab0179ccdcfb7b1e30950c1be0c6e8062b4cf0bdfc7d26d09", BlsPublicKey: "8fa6eeb962c4d6e6ff7f62ad9d51f1c0472b0b95548606788e6c2eec440adc3a993bdbf5654adfde8e1cf21194d1bd06"}, + {Index: " 375 ", Address: "0xdE0205b06C6517048769B673014E771f2F978bd7", BlsPriKey: "d9cd084e08eb167fe5b3206032f3f99087eefafd5c4d8129b19cae058f0c364d", BlsPublicKey: "8267f5f6643b842225ea7a85236e4e3790d1c4d1d2cacc65b0d2916b86156c1b372927fdca73a6897d5425265f6ed88e"}, + {Index: " 376 ", Address: "0xdF73134FB98c299DAA522Ceb54E87C8Da6a116c1", BlsPriKey: "c91385e235286f9faa0af2e10aea36fb287330efeb74cbcefc55248f3422ef59", BlsPublicKey: "016f713ef9dff2036bb79ad934c4cd32d0f98a82f73e1f9e5119215106d8b8e1525b3131b112bf8b78721bb000480595"}, + {Index: " 377 ", Address: "0xda1BcF114a3f717D179eeB789D1d9248A8a1631c", BlsPriKey: "3ff6d7744346eb9a1359de4cf2a71b05a20f3e680b30ccaffb17fd4b32beaf13", BlsPublicKey: "6cfe2dc9edb092185f4ee17a86ab64d3dd6cc56e787b555b0fc6948201a2543c6b9dae567d7313277c99e058c0532711"}, + {Index: " 378 ", Address: "0xddBb08c3385d8c9b7eD70507761bb6ae86601b36", BlsPriKey: "708edeec192b763d2be631ee4bbbf482deef0975d27136008cc6e518e657251a", BlsPublicKey: "dab743b3df6983a6238e591b0b10b792bd265f86edcc74b4fb6eb6be1c4991d75b3f9be5d8552400620989dd7236b58d"}, + {Index: " 379 ", Address: "0xe089cbD31bab882923c5c8D3C5432eAfA680E4f6", BlsPriKey: "ee3680cfaed342a14198d65ace8e8d07eb8613c96c4421c92356d4b60b3d3711", BlsPublicKey: "85e8979df7af07a275bd55eb452fa8a0e8443cc8fe5f1ef38fa88ea1cccaf40f215c38c7a4539457aac5c1338a907a86"}, + {Index: " 380 ", Address: "0xe201AE926cb423D61C67364FF3C736359b8f52C3", BlsPriKey: "b1d2dabac0c57ce92581239e0662f358f2a3217603c75a72785c51b6730e1e0c", BlsPublicKey: "2df479b42a72bb49556495723a9eecef9670aaf42abb81bb4b078ecafc66fce597b0bfb9a928e8621511cf94da5fd90a"}, + {Index: " 381 ", Address: "0xe21383C4dFeA14C3124e86C5F987045Ef2cF3F42", BlsPriKey: "00855f94388a2f59be2eeb8e8388b3288b3e301315ce124e787eb4a2a9206c53", BlsPublicKey: "4a85be01e58b4b63f982d79178d821d7ea2ff7c095add5a4cfb0559be2d0cc58ef26fef55738a7f5b3c373a22096ed19"}, + {Index: " 382 ", Address: "0xe36FCA53f5BC3FBa611E7CA51525755A6b3227E2", BlsPriKey: "f714c52565a3c9a499a1193272041963baed808e6c1a50f0040f58f7a902b635", BlsPublicKey: "2afdf5423edbd5a419cf24ff2c84a2d23827ea4e5bbe1888df89d40fbb97275d971da6bd535df9dea08cbe310b59a100"}, + {Index: " 383 ", Address: "0xe38bFD8B5bB44D9ec008ce94607a4d8485471B08", BlsPriKey: "7dd3a66fba839c3636495cced7fac0aa1dcb534571906da068edd9601430d53f", BlsPublicKey: "69b4ec1659dea3b26cecf224d2a828b038b74766a347c5619ffcbab80b1ca67c91f2f34f14777211dc7638f58e4e1994"}, + {Index: " 384 ", Address: "0xe67ce5A7d9BB454cfa022F47e1fC13Fc1D7bAA2d", BlsPriKey: "b7906806762b3ab12797630c711e75fcf40b0a4b8338c7a4bf30093096b2e95b", BlsPublicKey: "40dc3f05bdaf8aef129429ad0844ab8c1c1cd3c42ba182b305fda0540dcd6813e27a00fa60abe3dae8a8563701b17d00"}, + {Index: " 385 ", Address: "0xe6A45a867f4d8a12E66ba38012327df10Ac4E5AD", BlsPriKey: "c2a5eb1fd99b341d0d12475a451f74b0934959e465c63986125956e8e9f84c6e", BlsPublicKey: "8ac0901ab1f08f59500930560039b9b339f6176a3a45b93b3f497bc43c1f7302075274c2e1099b71d53763c88e2cec84"}, + {Index: " 386 ", Address: "0xe6d861421a4D252d4DC5D9D34B3EdC2891473456", BlsPriKey: "ecff4ab879de121933f992be57aa8fe04010cd2ecaf30412d7ed16e2c9662116", BlsPublicKey: "ed8b91e87a759b1d352c9539fdc033fc493ae40459b6557b200455265fdeaef87bcb0bd693bb0e3327fe54ec2608938a"}, + {Index: " 387 ", Address: "0xe7f43Af7D0879F904D9a81C469142e88F562de4E", BlsPriKey: "d0be4da9e7f85112cf65262d88155d68b8ec8b25b48b6edec45a616e9cb07f0f", BlsPublicKey: "26cf5afbad7b61544173a3e934de3c2d226ab6d8625e6b83064ad557dba1e0717a620965f4bc074aa62c15a1c6402e09"}, + {Index: " 388 ", Address: "0xe809bF710657bD64A238af34085156D571037BeF", BlsPriKey: "e075d8648c623297346e0e918f2bc33a73e079e27742d4cceea98e8bf15fdf4c", BlsPublicKey: "32e52db06d1dde90323e9cc469270cb34be643385fd8969bb2e7612e1ca8c664452b86ea84f1ddac9a9811062f8b2083"}, + {Index: " 389 ", Address: "0xe9bD1cA4896533cD6648ea43b1A7D68827aCc2b2", BlsPriKey: "223991e909cddb866090c92919368caa80227af6d21e90bac150622c9dd98c68", BlsPublicKey: "25338ec4f9319f1b57ede2c9b79261a97c3c2dc2ff900938454d35583626d35887ed1b8f31da59b7d6409b3674c40e15"}, + {Index: " 390 ", Address: "0xeCF73C626B228664471d3884D54d2bd9541AD4bc", BlsPriKey: "04bbb9126561b95f7a84078724823c5c69314e77dc0294e3a8cfe3a94a9cb570", BlsPublicKey: "27a05c10f1f34b01a9ca26aede07cb6b3caf4a52836900e1fa320386a5bce25b296fc2a509b569e3deb3884c7a75b819"}, + {Index: " 391 ", Address: "0xeE584723c953C4DD049edd39738f5247740a9594", BlsPriKey: "53303280087708076f10729fc311f76e1ad59cd095f3121229fca6efc0958225", BlsPublicKey: "57ce55414a3fc997ba8831098bdf033d819e10610008c438561f9a2f89238c8d0119f7136d58fe927ff2873f1e758d02"}, + {Index: " 392 ", Address: "0xf105C333253a16C1Ae24c23191E133E06C9ba501", BlsPriKey: "8e033b0eab9d37e62b54fa7336ae2311c64e9316b8c7c7f0231ef9d61ef3c042", BlsPublicKey: "4c1d8901e95469de6f9e6bd56ea5658ca0c77ae91ea9ab56eb990aec29dc85b932bf23230c3f3974e52e2367d94fca0b"}, + {Index: " 393 ", Address: "0xf216D7d113ee2AF079DEF5056CFAbEA5dE2Ea853", BlsPriKey: "3b419f6fb6ac60ee821d5ddc5f5a7ecefc530d727182d59f1263808f8a867d55", BlsPublicKey: "75472891216e686e176c2eef33c7d352f2882619f2740fae3dd5aeec7507fe20c2dfb95941a28193493db3075b45b911"}, + {Index: " 394 ", Address: "0xf2441A675f12977C719ADe3e2879eCf5c1a91f1B", BlsPriKey: "0acda5b8e2d62f777a1cfa8e94f6f0d115929ed5c4079fa1681c066ab8f95c48", BlsPublicKey: "f429b0cb118c3fc092ecaa2fc4266ccbdc830e506feea50fb66b7abedd14e275070c435d0d7ca5b8abf59a77095f1c0e"}, + {Index: " 395 ", Address: "0xf63217cC7a99b7ca4c0B234BFbffC62e6c1C62bE", BlsPriKey: "3289d509194fc75ec1be86278748d45efec86d95c290d770649bdcf3dfbadf28", BlsPublicKey: "e8997b61c30706127b131b54369aff0d39b2bb3544d0d2be4f066489f85ab698b8df36d53cbdf2b1de3de3d8efbed699"}, + {Index: " 396 ", Address: "0xf6642b7CA43d333fE8CD943A5423C6A28d5a8F28", BlsPriKey: "347c0bdaeaf83c28f0cd901f85af1165cdd1c647b981e092cb49572745aa1504", BlsPublicKey: "fa91cae281bc8ce5a697a1d37f4675282ccfcd5469ee4626df7f3279257127e1edb44860e64d3716da8bc66526ba9387"}, + {Index: " 397 ", Address: "0xf66508CFa2a6a52ebC708cF048334d1C6871Fa0F", BlsPriKey: "7dd193b1e19c2792315d7bc0181f527b4a46aeb1fa74998434bfcf68f49c1237", BlsPublicKey: "c1a0289c4fba53bad277f4f0948f04ca544753c051499d91954d912b81f22f6260336b86f5c09232220b1b270971fd09"}, + {Index: " 398 ", Address: "0xf7D06869051f6470b3a40C6A733571d135641D3b", BlsPriKey: "1e17f7b960f6867b0f37cc5a18b30697cd6b69b99bfcb323043cbb3827fb174d", BlsPublicKey: "60cab2be17047c025f4a92ad6c024bf18f0b5bc8744de453e6f781d3a8158647c2fad673eca23c5609e517a7933f3b8d"}, + {Index: " 399 ", Address: "0xfA41EDfFf9325c748140ed8Df677B4358568A529", BlsPriKey: "349dbdf228cbb0730c9754a0a188544a1799189050ccdc83c22ac0e0fa37153b", BlsPublicKey: "25721bbcbfe548daaf582b33b1777bcc652b4b3653dd4e262f6d11eace67b0dba1710c440123833a9d6db2c009a48392"}, + {Index: " 400 ", Address: "0xfD87f1fb4720cD7f89914D42BB42cEA7c23fcccd", BlsPriKey: "f21843dfd11ef1f2b1fa5930b56024287944ff75c441deb26cc40deb09b5ec01", BlsPublicKey: "4f804a9e7d6bfbc4f5296531b929e507d8c33dfd27fed63689e714ed7e0ecaa15545ca515675860698678f7dc0d53217"}, + {Index: " 401 ", Address: "0xfEa557d30651C3F0AeeCA12d33936eeFA0fc4f93", BlsPriKey: "0f946314c071958e26d626fcfcd0ce93fd156b42de77b9c62e4fd9fe69cdf539", BlsPublicKey: "c1cf96cd42de4f4ede8da531e73e57934b0dc5ebcd4df79c251a23d16d70d930441dbb2c6bd4ebebcf605a1fa444ee8f"}, + {Index: " 402 ", Address: "0xfF86Ff1FF457c3eBc18D71ffA30cfedd0860559c", BlsPriKey: "4b0d338b30a055bee3e2f070adc93d341b9316a315b4b4efe1639f0be2c1c10b", BlsPublicKey: "c51ad5ab03c3692e299cf335d48ee1dbed6c77c76c6ce3032e7e843f2245fe02379d1b98afcf8b9203c46eb567e6460c"}, + {Index: " 403 ", Address: "0xff1bE0eAC9B6053CD656947F0CcE7d277FF720Ec", BlsPriKey: "d94e179e77a8bf71206b2232eb826a9b5f8a64c55d919411263511e3a2ce7407", BlsPublicKey: "e17588fea9a1a1fa00a0e1a53046818e970a444b3e78d8fe4c4cc4de704abfef7a39654521fddf935078f28331c07503"}, } diff --git a/internal/genesis/newnodes.go b/internal/genesis/newnodes.go index 31008ae80..5338733bd 100644 --- a/internal/genesis/newnodes.go +++ b/internal/genesis/newnodes.go @@ -2,14 +2,14 @@ package genesis // NewNodeAccounts are the accounts for the new node var NewNodeAccounts = [...]DeployAccount{ - {Address: "0x0e59b767D5E74cf7B29Ef9bEc3dA4c402d357C6C", BlsPriKey: "bb0f9464c1ef92db53cf22953b4eeff4b78dd5af47c65a991ee6cf081b8d9569"}, - {Address: "0x0fAAda81c203C74CAc786786f7D428477a04bF9c", BlsPriKey: "eaff001d11db657636b1b62895cfa0f35ac767579d08e5959826a56cf7c43667"}, - {Address: "0x0fd228bdFbe9ad0c898e9A0Fee2E6FB01f596F0d", BlsPriKey: "f0818e99182552ab8401471dae9f219fe7232277073ee4b44b744b8c1f34ef47"}, - {Address: "0x123FF831333e2662D00c60A2C46f7196204506e9", BlsPriKey: "e2bf6f64c1fa6301a2e5d839f2da986f5fe2f10ef2837c5ef2633571199cda3c"}, - {Address: "0x1240775288d0EE975583A2A7022006539dADb354", BlsPriKey: "bc8174046a2b556da8a731aaa2d30cc04f3f401c708b19bf4d9c47bba7dea11c"}, - {Address: "0x127b8Cb71Fb78338d9EFFe47bB51c2EAd3995378", BlsPriKey: "ab5cdc9b688af2ee58346b2af9952cc7b84146538fe78d27c3df9fd9f0a88b71"}, - {Address: "0x141B0e0f05739B7B784654E973e9b9146473aAb9", BlsPriKey: "06c2aac72636fb74df815688696fe12c4894a50c016e6016a6e51f9452c77b36"}, - {Address: "0x1492ebD0EcfD54B4c211b37C8891bA3493c52100", BlsPriKey: "04e762a7c540d2f2f566c0f1729475753914b42e6293a8e6653f29fc6ffba273"}, - {Address: "0x1530A04592F9C3bF06aC6044525f08937ED38edB", BlsPriKey: "68bd252b49616db29a5b923c5508374b3ee8184b2d3899a1d71d5ea0f3e68348"}, - {Address: "0xE2ab78ecf325084485957B2599d53Bcf944Cbca8", BlsPriKey: "d09a1c5efd391ef432d5be413d062374643f7f6f68fa59e58409d88d985c6d38"}, + {Index: "0", Address: "0x0e59b767D5E74cf7B29Ef9bEc3dA4c402d357C6C", BlsPriKey: "bb0f9464c1ef92db53cf22953b4eeff4b78dd5af47c65a991ee6cf081b8d9569", BlsPublicKey: "92fa832056e71ea833e24a7e877e2f371ca645cf338a4cb93c2ced40d8d6676eaf15dac642f22c238d58fed279f34700"}, + {Index: "1", Address: "0x0fAAda81c203C74CAc786786f7D428477a04bF9c", BlsPriKey: "eaff001d11db657636b1b62895cfa0f35ac767579d08e5959826a56cf7c43667", BlsPublicKey: "d1ac9bbf790e347cbe5e6fb9145f5ffd93e335452f94829df6376c6924fbceea4b96ac8c29778e7b06a92e25bd06f892"}, + {Index: "2", Address: "0x0fd228bdFbe9ad0c898e9A0Fee2E6FB01f596F0d", BlsPriKey: "f0818e99182552ab8401471dae9f219fe7232277073ee4b44b744b8c1f34ef47", BlsPublicKey: "0a4d8c3168072ac82604103b3ca5efd038ae38c6062f303b08a24152b8c58d1ff3b578521f80a386bcfa2ad6c680ba14"}, + {Index: "3", Address: "0x123FF831333e2662D00c60A2C46f7196204506e9", BlsPriKey: "e2bf6f64c1fa6301a2e5d839f2da986f5fe2f10ef2837c5ef2633571199cda3c", BlsPublicKey: "a31b122157b1d6d958a184361299396b3b72a3cdcd20eb5e07e18bc03034fa1a8ddbd2e0f9e3ed68cd412b7b673c0094"}, + {Index: "4", Address: "0x1240775288d0EE975583A2A7022006539dADb354", BlsPriKey: "bc8174046a2b556da8a731aaa2d30cc04f3f401c708b19bf4d9c47bba7dea11c", BlsPublicKey: "1aeaebce1a8a8aabb64877491a392f63682b3e2a223d1d3c7c5ef8d5b33e5e700543d5c9d8017c8520e6d7193f496f05"}, + {Index: "5", Address: "0x127b8Cb71Fb78338d9EFFe47bB51c2EAd3995378", BlsPriKey: "ab5cdc9b688af2ee58346b2af9952cc7b84146538fe78d27c3df9fd9f0a88b71", BlsPublicKey: "3ec3dd79bd1a8e27d0fa927bbf0f425ce564a962389a723924f071fc7802bc5924d848980595cd584e3588a6d3e0a191"}, + {Index: "6", Address: "0x141B0e0f05739B7B784654E973e9b9146473aAb9", BlsPriKey: "06c2aac72636fb74df815688696fe12c4894a50c016e6016a6e51f9452c77b36", BlsPublicKey: "f2f085fb9258e47601db4c3b87f9d603b7557b57e1c4e0361f86f42070b45bca09d69276c4717846589b3a99481eed80"}, + {Index: "7", Address: "0x1492ebD0EcfD54B4c211b37C8891bA3493c52100", BlsPriKey: "04e762a7c540d2f2f566c0f1729475753914b42e6293a8e6653f29fc6ffba273", BlsPublicKey: "01c91a20ec490e2e6663a3c5ce04e57b991998f8967453535360de66e14dca797aa5fd270cc6d3dbc31d684d2622af05"}, + {Index: "8", Address: "0x1530A04592F9C3bF06aC6044525f08937ED38edB", BlsPriKey: "68bd252b49616db29a5b923c5508374b3ee8184b2d3899a1d71d5ea0f3e68348", BlsPublicKey: "fe3f52d068bb83211b3e804a29f27699f9388d2dd0fcbf91353e4dd68da69636046a24fd5912f8dd5e97388577fd388a"}, + {Index: "9", Address: "0xE2ab78ecf325084485957B2599d53Bcf944Cbca8", BlsPriKey: "d09a1c5efd391ef432d5be413d062374643f7f6f68fa59e58409d88d985c6d38", BlsPublicKey: "c02e49e1395c6fbbabf0d619d872f74774d34ddec83553cf7f687da593253d072d5d050b3b4a3005304e504781847999"}, } diff --git a/internal/memprofiling/lib.go b/internal/memprofiling/lib.go index 8c7226fe7..926ea0b1a 100644 --- a/internal/memprofiling/lib.go +++ b/internal/memprofiling/lib.go @@ -22,7 +22,7 @@ const ( // Run garbage collector every 30 minutes. gcTime = 10 * time.Minute // Print out memstat every memStatTime. - memStatTime = 30 * time.Second + memStatTime = 300 * time.Second ) // MemProfiling is the struct to watch objects for memprofiling. @@ -100,9 +100,9 @@ func MaybeCallGCPeriodically() { for { select { case <-time.After(gcTime): - PrintMemUsage("mem stats before GC") + PrintMemUsage("Memory stats before GC") runtime.GC() - PrintMemUsage("mem stats after GC") + PrintMemUsage("Memory stats after GC") } } }() @@ -110,7 +110,7 @@ func MaybeCallGCPeriodically() { for { select { case <-time.After(memStatTime): - PrintMemUsage("mem stats") + PrintMemUsage("Memory stats") } } }() diff --git a/internal/utils/passphrase.go b/internal/utils/passphrase.go index 03206e838..7cc16599a 100644 --- a/internal/utils/passphrase.go +++ b/internal/utils/passphrase.go @@ -2,8 +2,14 @@ package utils import ( "fmt" + "io" + "io/ioutil" + "os" + "strconv" + "strings" "syscall" + "github.com/pkg/errors" "golang.org/x/crypto/ssh/terminal" ) @@ -19,3 +25,56 @@ func AskForPassphrase(prompt string) string { return password } + +// readAllAsString reads the entire file contents as a string. +func readAllAsString(r io.Reader) (data string, err error) { + bytes, err := ioutil.ReadAll(r) + return string(bytes), err +} + +// GetPassphraseFromSource reads a passphrase such as a key-encrypting one +// non-interactively from the given source. +// +// The source can be "pass:password", "env:var", "file:pathname", "fd:number", +// or "stdin". See “PASS PHRASE ARGUMENTS” section of openssl(1) for details. +func GetPassphraseFromSource(src string) (pass string, err error) { + switch src { + case "stdin": + return readAllAsString(os.Stdin) + } + methodArg := strings.SplitN(src, ":", 2) + if len(methodArg) < 2 { + return "", errors.Errorf("invalid passphrase reading method %#v", src) + } + method := methodArg[0] + arg := methodArg[1] + switch method { + case "pass": + return arg, nil + case "env": + pass, ok := os.LookupEnv(arg) + if !ok { + return "", errors.Errorf("environment variable %#v undefined", arg) + } + return pass, nil + case "file": + f, err := os.Open(arg) + if err != nil { + return "", errors.Wrapf(err, "cannot open file %#v", arg) + } + defer func() { _ = f.Close() }() + return readAllAsString(f) + case "fd": + fd, err := strconv.ParseUint(arg, 10, 0) + if err != nil { + return "", errors.Wrapf(err, "invalid fd literal %#v", arg) + } + f := os.NewFile(uintptr(fd), "(passphrase-source)") + if f == nil { + return "", errors.Errorf("cannot open fd %#v", fd) + } + defer func() { _ = f.Close() }() + return readAllAsString(f) + } + return "", errors.Errorf("invalid passphrase reading method %#v", method) +} diff --git a/internal/utils/passphrase_test.go b/internal/utils/passphrase_test.go new file mode 100644 index 000000000..66affc661 --- /dev/null +++ b/internal/utils/passphrase_test.go @@ -0,0 +1,44 @@ +package utils + +import ( + "fmt" + "os" + "testing" + + "github.com/pkg/errors" + + testutils "github.com/harmony-one/harmony/internal/utils/testing" +) + +func exerciseGetPassphraseFromSource(t *testing.T, source, expected string) { + if actual, err := GetPassphraseFromSource(source); err != nil { + t.Fatal(errors.Wrap(err, "cannot read passphrase")) + } else if actual != expected { + t.Errorf("expected passphrase %#v; got %#v", expected, actual) + } +} + +func TestGetPassphraseFromSource_Pass(t *testing.T) { + exerciseGetPassphraseFromSource(t, "pass:hello world", "hello world") +} + +func TestGetPassphraseFromSource_File(t *testing.T) { + expected := "\nhello world\n" + t.Run("stdin", func(t *testing.T) { + f := testutils.NewTempFileWithContents(t, []byte(expected)) + savedStdin := os.Stdin + defer func() { os.Stdin = savedStdin }() + os.Stdin = f + exerciseGetPassphraseFromSource(t, "stdin", expected) + }) + t.Run("file", func(t *testing.T) { + f := testutils.NewTempFileWithContents(t, []byte(expected)) + defer testutils.CloseAndRemoveTempFile(t, f) + exerciseGetPassphraseFromSource(t, "file:"+f.Name(), expected) + }) + t.Run("fd", func(t *testing.T) { + f := testutils.NewTempFileWithContents(t, []byte(expected)) + defer testutils.CloseAndRemoveTempFile(t, f) + exerciseGetPassphraseFromSource(t, fmt.Sprintf("fd:%d", f.Fd()), expected) + }) +} diff --git a/internal/utils/testing/tempfile.go b/internal/utils/testing/tempfile.go new file mode 100644 index 000000000..b20e61fd4 --- /dev/null +++ b/internal/utils/testing/tempfile.go @@ -0,0 +1,46 @@ +package testutils + +import ( + "io" + "io/ioutil" + "os" + "strings" + "testing" + + "github.com/pkg/errors" +) + +// NewTempFile creates a new, empty temp file for testing. Errors are fatal. +func NewTempFile(t *testing.T) *os.File { + pattern := strings.ReplaceAll(t.Name(), string(os.PathSeparator), "_") + f, err := ioutil.TempFile("", pattern) + if err != nil { + t.Fatal(errors.Wrap(err, "cannot create temp file")) + } + return f +} + +// NewTempFileWithContents creates a new, empty temp file for testing, +// with the given contents. The read/write offset is set to the beginning. +// Errors are fatal. +func NewTempFileWithContents(t *testing.T, contents []byte) *os.File { + f := NewTempFile(t) + if _, err := f.Write(contents); err != nil { + t.Fatal(errors.Wrapf(err, "cannot write contents into %s", f.Name())) + } + if _, err := f.Seek(0, io.SeekStart); err != nil { + t.Fatal(errors.Wrapf(err, "cannot rewind test file %s", f.Name())) + } + return f +} + +// CloseAndRemoveTempFile closes/removes the temp file. Errors are logged. +func CloseAndRemoveTempFile(t *testing.T, f *os.File) { + fn := f.Name() + if err := f.Close(); err != nil { + t.Log(errors.Wrapf(err, "cannot close test file %s", fn)) + } + if err := os.Remove(fn); err != nil { + t.Log(errors.Wrapf(err, "cannot remove test file %s", fn)) + } +} diff --git a/node/node.go b/node/node.go index 8c079dab9..c098b9d49 100644 --- a/node/node.go +++ b/node/node.go @@ -333,7 +333,7 @@ func New(host p2p.Host, consensusObj *consensus.Consensus, chainDBFactory shardc // TODO (leo): we need to have support of cross-shard tx later so that the token can be transferred from beacon chain shard to other tx shards. if node.isFirstTime { // Setup one time smart contracts - node.AddFaucetContractToPendingTransactions() + //node.AddFaucetContractToPendingTransactions() } else { node.AddContractKeyAndAddress(scFaucet) } diff --git a/node/node_genesis.go b/node/node_genesis.go index 44ff96462..7457a202a 100644 --- a/node/node_genesis.go +++ b/node/node_genesis.go @@ -90,7 +90,7 @@ func (node *Node) SetupGenesisBlock(db ethdb.Database, shardID uint32) error { if shardID == 0 { // Accounts used by validator/nodes to stake and participate in the network. - AddNodeAddressesToGenesisAlloc(genesisAlloc) + // AddNodeAddressesToGenesisAlloc(genesisAlloc) } // TODO: add ShardID into chainconfig and change ChainID to NetworkID diff --git a/node/node_handler.go b/node/node_handler.go index c1dbf5760..2913a6a49 100644 --- a/node/node_handler.go +++ b/node/node_handler.go @@ -490,11 +490,11 @@ func (node *Node) pingMessageHandler(msgPayload []byte, sender string) int { node.host.ConnectHostPeer(*peer) if ping.Node.Role == proto_node.ClientRole { - utils.GetLogInstance().Info("Add Client Peer to Node", "Address", node.Consensus.GetSelfAddress(), "Client", peer) + utils.GetLogInstance().Info("Add Client Peer to Node", "PubKey", node.Consensus.PubKey.SerializeToHexStr(), "Client", peer) node.ClientPeer = peer } else { node.AddPeers([]*p2p.Peer{peer}) - utils.GetLogInstance().Info("Add Peer to Node", "Address", node.Consensus.GetSelfAddress(), "Peer", peer, "# Peers", len(node.Consensus.PublicKeys)) + utils.GetLogInstance().Info("Add Peer to Node", "PubKey", node.Consensus.PubKey.SerializeToHexStr(), "Peer", peer, "# Peers", len(node.Consensus.PublicKeys)) } return 1 @@ -805,10 +805,5 @@ func getBinaryPath() (argv0 string, err error) { // ConsensusMessageHandler passes received message in node_handler to consensus func (node *Node) ConsensusMessageHandler(msgPayload []byte) { - select { - case node.Consensus.MsgChan <- msgPayload: - case <-time.After(consensusTimeout): - //utils.GetLogInstance().Debug("[Consensus] ConsensusMessageHandler timeout", "duration", consensusTimeout, "msgPayload", len(msgPayload)) - } - return + node.Consensus.MsgChan <- msgPayload } diff --git a/node/node_newblock.go b/node/node_newblock.go index 45207e46b..3e611a6d7 100644 --- a/node/node_newblock.go +++ b/node/node_newblock.go @@ -17,7 +17,7 @@ import ( const ( DefaultThreshold = 1 FirstTimeThreshold = 2 - ConsensusTimeOut = 10 + ConsensusTimeOut = 30 PeriodicBlock = 1 * time.Second BlockPeriod = 10 * time.Second ) @@ -34,13 +34,22 @@ func (node *Node) WaitForConsensusReadyv2(readySignal chan struct{}, stopChan ch time.Sleep(30 * time.Second) // Wait for other nodes to be ready (test-only) firstTime := true + timeoutCount := 0 + var newBlock *types.Block for { // keep waiting for Consensus ready select { case <-stopChan: - utils.GetLogInstance().Debug("Consensus propose new block: STOPPED!") + utils.GetLogInstance().Debug("Consensus new block proposal: STOPPED!") return - + case <-time.After(ConsensusTimeOut * time.Second): + node.Consensus.ResetState() + timeoutCount++ + if newBlock != nil { + utils.GetLogInstance().Debug("Consensus timeout, retry!", "count", timeoutCount) + // Send the new block to Consensus so it can be confirmed. + node.BlockChannel <- newBlock + } case <-readySignal: firstTry := true deadline := time.Now().Add(BlockPeriod) @@ -62,25 +71,24 @@ func (node *Node) WaitForConsensusReadyv2(readySignal chan struct{}, stopChan ch deadline = time.Now().Add(BlockPeriod) // Normal tx block consensus selectedTxs := node.getTransactionsForNewBlock(MaxNumberOfTransactionsPerBlock) - utils.GetLogInstance().Debug("PROPOSING NEW BLOCK ------------------------------------------------", "blockNum", node.Blockchain().CurrentBlock().NumberU64()+1, "threshold", threshold, "selectedTxs", len(selectedTxs)) + utils.GetLogInstance().Info("PROPOSING NEW BLOCK ------------------------------------------------", "blockNum", node.Blockchain().CurrentBlock().NumberU64()+1, "threshold", threshold, "selectedTxs", len(selectedTxs)) if err := node.Worker.CommitTransactions(selectedTxs); err != nil { ctxerror.Log15(utils.GetLogger().Error, ctxerror.New("cannot commit transactions"). WithCause(err)) } - block, err := node.Worker.Commit() + newBlock, err := node.Worker.Commit() if err != nil { ctxerror.Log15(utils.GetLogger().Error, ctxerror.New("cannot commit new block"). WithCause(err)) continue - } else if err := node.proposeShardState(block); err != nil { + } else if err := node.proposeShardState(newBlock); err != nil { ctxerror.Log15(utils.GetLogger().Error, ctxerror.New("cannot add shard state"). WithCause(err)) } else { - newBlock := block - utils.GetLogInstance().Debug("Successfully proposed new block", "blockNum", block.NumberU64(), "numTxs", block.Transactions().Len()) + utils.GetLogInstance().Debug("Successfully proposed new block", "blockNum", newBlock.NumberU64(), "numTxs", newBlock.Transactions().Len()) // Send the new block to Consensus so it can be confirmed. node.BlockChannel <- newBlock diff --git a/node/node_syncing.go b/node/node_syncing.go index ed2460e67..8f4a5a4ae 100644 --- a/node/node_syncing.go +++ b/node/node_syncing.go @@ -111,6 +111,7 @@ SyncingLoop: node.stateMutex.Lock() node.State = NodeNotInSync node.stateMutex.Unlock() + node.Consensus.BlocksNotSynchronized() node.stateSync.SyncLoop(bc, worker, willJoinConsensus, false) if willJoinConsensus { node.stateMutex.Lock() @@ -169,8 +170,7 @@ func (node *Node) SendNewBlockToUnsync() { } // really need to have a unique id independent of ip/port - selfPeerAddress := node.Consensus.SelfAddress - utils.GetLogInstance().Debug("[SYNC] peerRegistration Record", "selfPeerAddress", selfPeerAddress, "number", len(node.peerRegistrationRecord)) + utils.GetLogInstance().Debug("[SYNC] peerRegistration Record", "selfPubKey", node.Consensus.PubKey.SerializeToHexStr(), "number", len(node.peerRegistrationRecord)) for peerID, config := range node.peerRegistrationRecord { elapseTime := time.Now().UnixNano() - config.timestamp diff --git a/scripts/monitor.sh b/scripts/monitor.sh new file mode 100644 index 000000000..a6ec7bbf3 --- /dev/null +++ b/scripts/monitor.sh @@ -0,0 +1,72 @@ +#!/bin/bash + +function usage +{ + cat< /dev/null - echo "node with port: $port is killed" - fi +unset -v progname +progname="${0##*/}" + +unset -f msg err + +msg() { + case $# in + [1-9]*) + echo "${progname}: $*" >&2 + ;; + esac +} + +err() { + local code + code="${1}" + shift 1 + msg "$@" + exit "${code}" } # https://www.linuxjournal.com/content/validating-ip-address-bash-script @@ -33,10 +43,9 @@ function myip() { # get ipv4 address only, right now only support ipv4 addresses PUB_IP=$(dig -4 @resolver1.opendns.com ANY myip.opendns.com +short) if valid_ip $PUB_IP; then - echo MYIP = $PUB_IP + msg "public IP address autodetected: $PUB_IP" else - echo NO valid public IP found: $PUB_IP - exit 1 + err 1 "NO valid public IP found: $PUB_IP" fi } @@ -68,37 +77,65 @@ function setup_env add_env /etc/pam.d/common-session "session required pam_limits.so" } -function find_harmony_process -{ - unset -v pidfile pid - pidfile="harmony-${PUB_IP}.pid" - pid=$! - echo "${pid}" > "${pidfile}" - ps -f -p "${pid}" -} - ######## main ######### if [[ $EUID -ne 0 ]]; then - echo "This script must be run as root" - echo Please use \"sudo $0\" + msg "this script must be run as root" + msg please use \"sudo $0\" exit 1 fi -if [ -z "$1" ]; then - echo "Usage: $0 account_address" - echo - echo "Please provide account address." - echo "For foundational nodes, please follow the instructions in discord #foundational-nodes channel" - echo "to generate and register your account address with " - echo - exit 1 -fi +print_usage() { + cat <<- ENDEND + usage: ${progname} [-1ch] account_address + -c back up database/logs and start clean + (use only when directed by Harmony) + -1 do not loop; run once and exit + -h print this help and exit + ENDEND +} + +usage() { + msg "$@" + print_usage >&2 + exit 64 # EX_USAGE +} -IDX=$1 +unset start_clean loop +start_clean=false +loop=true -killnode +unset OPTIND OPTARG opt +OPTIND=1 +while getopts :1ch opt +do + case "${opt}" in + '?') usage "unrecognized option -${OPTARG}";; + ':') usage "missing argument for -${OPTARG}";; + c) start_clean=true;; + 1) loop=false;; + h) print_usage; exit 0;; + *) err 70 "unhandled option -${OPTARG}";; # EX_SOFTWARE + esac +done +shift $((${OPTIND} - 1)) + +case $# in +0) + usage "Please provide account address." \ + "For foundational nodes, please follow the instructions in Discord #foundational-nodes channel" \ + "to generate and register your account address with ." + ;; +esac + +IDX="${1}" +shift 1 + +case $# in +[1-9]*) + usage "extra arguments at the end ($*)" + ;; +esac -mkdir -p latest BUCKET=pub.harmony.one OS=$(uname -s) REL=drum @@ -117,11 +154,18 @@ for bin in "${BIN[@]}"; do rm -f ${bin} done -# download all the binaries -for bin in "${BIN[@]}"; do - curl http://${BUCKET}.s3.amazonaws.com/${FOLDER}${bin} -o ${bin} -done -chmod +x harmony +download_binaries() { + local outdir + outdir="${1:-.}" + mkdir -p "${outdir}" + for bin in "${BIN[@]}"; do + curl http://${BUCKET}.s3.amazonaws.com/${FOLDER}${bin} -o "${outdir}/${bin}" || return $? + done + chmod +x "${outdir}/harmony" + (cd "${outdir}" && exec openssl sha256 "${BIN[@]}") > "${outdir}/harmony-checksums.txt" +} + +download_binaries || err 69 "initial node software update failed" NODE_PORT=9000 PUB_IP= @@ -138,22 +182,135 @@ myip # public boot node multiaddress BN_MA=/ip4/100.26.90.187/tcp/9874/p2p/Qmdfjtk6hPoyrH1zVD9PEH4zfWLo38dP2mDvvKXfh3tnEv,/ip4/54.213.43.194/tcp/9874/p2p/QmZJJx6AdaoEkGLrYG4JeLCKeCKDjnFz2wfHNHxAqFSGA9 -echo "############### Running Harmony Process ###############" -if [ "$OS" == "Linux" ]; then -# Run Harmony Node - LD_LIBRARY_PATH=$(pwd) ./harmony -bootnodes $BN_MA -ip $PUB_IP -port $NODE_PORT -is_genesis -is_archival -accounts $IDX -else - DYLD_FALLBACK_LIBRARY_PATH=$(pwd) ./harmony -bootnodes $BN_MA -ip $PUB_IP -port $NODE_PORT -is_genesis -is_archival -accounts $IDX +if ${start_clean} +then + msg "backing up old database/logs (-c)" + unset -v backup_dir now + now=$(date -u +%Y-%m-%dT%H:%M:%SZ) + mkdir -p backups + backup_dir=$(mktemp -d "backups/${now}.XXXXXX") + mv harmony_db_* latest "${backup_dir}/" || : + rm -rf latest fi +mkdir -p latest -find_harmony_process -echo -echo +unset -v check_update_pid + +cleanup() { + local trap_sig kill_sig + + trap_sig="${1:-EXIT}" + + kill_sig="${trap_sig}" + case "${kill_sig}" in + 0|EXIT|2|INT) kill_sig=TERM;; + esac + + case "${check_update_pid+set}" in + set) + msg "terminating update checker (pid ${check_update_pid})" + kill -${kill_sig} "${check_update_pid}" + ;; + esac +} + +unset -v trap_sigs trap_sig +trap_sigs="EXIT HUP INT TERM" + +trap_func() { + local trap_sig="${1-EXIT}" + case "${trap_sig}" in + 0|EXIT) msg "exiting";; + *) msg "received SIG${trap_sig}";; + esac -# echo Please run the following command to inspect the log -# echo "tail -f harmony-${PUB_IP}.log" + trap - ${trap_sigs} + + cleanup "${trap_sig}" + + case "${trap_sig}" in + ""|0|EXIT) ;; + *) kill -"${trap_sig}" "$$";; + esac +} +for trap_sig in ${trap_sigs} +do + trap "trap_func ${trap_sig}" ${trap_sig} +done + +# Kill the given PID, ensuring that it is a child of this script ($$). +kill_child() { + local pid + pid="${1}" + case $(($(ps -oppid= -p"${pid}" || :) + 0)) in + $$) ;; + *) return 1;; + esac + msg "killing pid ${pid}" + kill "${pid}" +} + +# Kill nodes that are direct child of this script (pid $$), +# i.e. run directly from main loop. +kill_node() { + local pids pid delay + + msg "finding node processes that are our children" + pids=$( + ps axcwwo "pid=,ppid=,command=" | + awk -v me=$$ '$2 == me && $3 == "harmony" { print $1; }' + ) + msg "found node processes: ${pids:-""}" + for pid in ${pids} + do + delay=0 + while kill_child ${pid} + do + sleep ${delay} + delay=1 + done + msg "pid ${pid} no longer running" + done +} + +{ + while : + do + msg "re-downloading binaries in 5m" + sleep 300 + while ! download_binaries staging + do + msg "staging download failed; retrying in 30s" + sleep 30 + done + if diff staging/harmony-checksums.txt harmony-checksums.txt + then + msg "binaries did not change" + continue + fi + msg "binaries changed; moving from staging into main" + (cd staging; exec mv harmony-checksums.txt "${BIN[@]}" ..) || continue + msg "binaries updated, killing node to restart" + kill_node + done +} > harmony-update.out 2>&1 & +check_update_pid=$! + +unset -v passphrase +read -rsp "Enter passphrase for account ${IDX}: " passphrase echo -echo You may use \"sudo pkill harmony\" to terminate running harmony node program. -trap killnode SIGINT SIGTERM +while : +do + msg "############### Running Harmony Process ###############" + if [ "$OS" == "Linux" ]; then + # Run Harmony Node + echo -n "${passphrase}" | LD_LIBRARY_PATH=$(pwd) ./harmony -bootnodes $BN_MA -ip $PUB_IP -port $NODE_PORT -is_genesis -is_archival -accounts $IDX -pass stdin + else + echo -n "${passphrase}" | DYLD_FALLBACK_LIBRARY_PATH=$(pwd) ./harmony -bootnodes $BN_MA -ip $PUB_IP -port $NODE_PORT -is_genesis -is_archival -accounts $IDX -pass stdin + fi || msg "node process finished with status $?" + ${loop} || break + msg "restarting in 10s..." + sleep 10 +done diff --git a/test/crypto/bls/main.go b/test/crypto/bls/main.go index 7cde3b5d4..598c99c68 100644 --- a/test/crypto/bls/main.go +++ b/test/crypto/bls/main.go @@ -23,6 +23,14 @@ func main() { for i := 0; i < len(genesis.NewNodeAccounts); i++ { var sec bls.SecretKey sec.SetByCSPRNG() + err := sec.DeserializeHexStr(sec.SerializeToHexStr()) + if err != nil { + fmt.Println(err) + } + if i%10 == 0 { + fmt.Println() + fmt.Printf("// %d - %d\n", i, i+9) + } fmt.Printf("{Address: \"%s\", BlsPriKey: \"%s\"},\n", genesis.NewNodeAccounts[i].Address, sec.SerializeToHexStr()) if i == 0 { aggSig = sec.Sign(m) diff --git a/test/debug.sh b/test/debug.sh index 1f295ec35..8ab875c48 100755 --- a/test/debug.sh +++ b/test/debug.sh @@ -1,3 +1,3 @@ ./test/kill_node.sh rm -rf tmp_log* -./test/deploy.sh -D -1 ./test/configs/ten-oneshard.txt +./test/deploy.sh -D -1 ./test/configs/beaconchain20.txt diff --git a/test/deploy.sh b/test/deploy.sh index 5422b98ad..eeb6825d3 100755 --- a/test/deploy.sh +++ b/test/deploy.sh @@ -48,7 +48,7 @@ function usage { local ME=$(basename $0) cat<&1 | tee -a "${LOG_FILE}" &;; + *) $DRYRUN "${ROOT}/bin/harmony" "${args[@]}" "${extra_args[@]}" 2>&1 | tee -a "${LOG_FILE}" &;; esac i=$((i+1)) done < $config