def validators(b, node_keys): from bigchaindb.backend import query height = get_block_height(b) original_validators = b.get_validators() (public_key, private_key) = list(node_keys.items())[0] validator_set = [{ 'address': 'F5426F0980E36E03044F74DD414248D29ABCBDB2', 'pub_key': { 'data': public_key, 'type': 'ed25519' }, 'voting_power': 10 }] validator_update = {'validators': validator_set, 'height': height + 1} query.store_validator_set(b.connection, validator_update) yield height = get_block_height(b) validator_update = {'validators': original_validators, 'height': height} query.store_validator_set(b.connection, validator_update)
def validators(b, node_keys): from bigchaindb.backend import query import time def timestamp(): # we need this to force unique election_ids for setup and teardown of fixtures return str(time.time()) height = get_block_height(b) original_validators = b.get_validators() (public_key, private_key) = list(node_keys.items())[0] validator_set = [{'address': 'F5426F0980E36E03044F74DD414248D29ABCBDB2', 'public_key': {'value': public_key, 'type': 'ed25519-base64'}, 'voting_power': 10}] validator_update = {'validators': validator_set, 'height': height + 1, 'election_id': f'setup_at_{timestamp()}'} query.store_validator_set(b.connection, validator_update) yield height = get_block_height(b) validator_update = {'validators': original_validators, 'height': height, 'election_id': f'teardown_at_{timestamp()}'} query.store_validator_set(b.connection, validator_update)
def ongoing_validator_election_2(b, valid_upsert_validator_election_2, ed25519_node_keys): validators = b.get_validators(height=1) genesis_validators = {'validators': validators, 'height': 0, 'election_id': None} query.store_validator_set(b.connection, genesis_validators) b.store_bulk_transactions([valid_upsert_validator_election_2]) block_1 = Block(app_hash='hash_2', height=1, transactions=[valid_upsert_validator_election_2.id]) b.store_block(block_1._asdict()) return valid_upsert_validator_election_2
def ongoing_validator_election(b, valid_upsert_validator_election, ed25519_node_keys): validators = b.get_validators(height=1) genesis_validators = {'validators': validators, 'height': 0} query.store_validator_set(b.connection, genesis_validators) b.store_bulk_transactions([valid_upsert_validator_election]) query.store_election(b.connection, valid_upsert_validator_election.id, 1, is_concluded=False) block_1 = Block(app_hash='hash_1', height=1, transactions=[valid_upsert_validator_election.id]) b.store_block(block_1._asdict()) return valid_upsert_validator_election
def ongoing_validator_election(b, valid_upsert_validator_election, ed25519_node_keys): validators = b.get_validators(height=1) genesis_validators = {'validators': validators, 'height': 0} query.store_validator_set(b.connection, genesis_validators) b.store_bulk_transactions([valid_upsert_validator_election]) query.store_election(b.connection, valid_upsert_validator_election.id, 1, is_concluded=False) block_1 = Block(app_hash='hash_1', height=1, transactions=[valid_upsert_validator_election.id]) b.store_block(block_1._asdict()) return valid_upsert_validator_election
def ongoing_validator_election_2(b, valid_upsert_validator_election_2, ed25519_node_keys): validators = b.get_validators(height=1) genesis_validators = { 'validators': validators, 'height': 0, 'election_id': None } query.store_validator_set(b.connection, genesis_validators) b.store_bulk_transactions([valid_upsert_validator_election_2]) block_1 = Block(app_hash='hash_2', height=1, transactions=[valid_upsert_validator_election_2.id]) b.store_block(block_1._asdict()) return valid_upsert_validator_election_2
def validators(b, node_keys): from bigchaindb.backend import query import time def timestamp( ): # we need this to force unique election_ids for setup and teardown of fixtures return str(time.time()) height = get_block_height(b) original_validators = b.get_validators() (public_key, private_key) = list(node_keys.items())[0] validator_set = [{ 'address': 'F5426F0980E36E03044F74DD414248D29ABCBDB2', 'public_key': { 'value': public_key, 'type': 'ed25519-base64' }, 'voting_power': 10 }] validator_update = { 'validators': validator_set, 'height': height + 1, 'election_id': f'setup_at_{timestamp()}' } query.store_validator_set(b.connection, validator_update) yield height = get_block_height(b) validator_update = { 'validators': original_validators, 'height': height, 'election_id': f'teardown_at_{timestamp()}' } query.store_validator_set(b.connection, validator_update)
def test_validator_update(): from bigchaindb.backend import connect, query conn = connect() def gen_validator_update(height): return {'data': 'somedata', 'height': height} for i in range(1, 100, 10): value = gen_validator_update(i) query.store_validator_set(conn, value) v1 = query.get_validator_set(conn, 8) assert v1['height'] == 1 v41 = query.get_validator_set(conn, 50) assert v41['height'] == 41 v91 = query.get_validator_set(conn) assert v91['height'] == 91
def test_validator_update(): from bigchaindb.backend import connect, query conn = connect() def gen_validator_update(height): return {'data': 'somedata', 'height': height, 'election_id': f'election_id_at_height_{height}'} for i in range(1, 100, 10): value = gen_validator_update(i) query.store_validator_set(conn, value) v1 = query.get_validator_set(conn, 8) assert v1['height'] == 1 v41 = query.get_validator_set(conn, 50) assert v41['height'] == 41 v91 = query.get_validator_set(conn) assert v91['height'] == 91