def test_address(self): address = Address("erd1l453hd0gt5gzdp7czpuall8ggt2dcv5zwmfdf3sd3lguxseux2fsmsgldz") address_cloned = Address(address) self.assertEqual("fd691bb5e85d102687d81079dffce842d4dc328276d2d4c60d8fd1c3433c3293", address.hex()) self.assertEqual("erd1l453hd0gt5gzdp7czpuall8ggt2dcv5zwmfdf3sd3lguxseux2fsmsgldz", address.bech32()) self.assertEqual(address.hex(), address_cloned.hex()) self.assertEqual(address.bech32(), address_cloned.bech32()) address = Address("fd691bb5e85d102687d81079dffce842d4dc328276d2d4c60d8fd1c3433c3293") address_cloned = Address(address) self.assertEqual("fd691bb5e85d102687d81079dffce842d4dc328276d2d4c60d8fd1c3433c3293", address.hex()) self.assertEqual("erd1l453hd0gt5gzdp7czpuall8ggt2dcv5zwmfdf3sd3lguxseux2fsmsgldz", address.bech32()) self.assertEqual(address.hex(), address_cloned.hex()) self.assertEqual(address.bech32(), address_cloned.bech32()) address = Address("") self.assertRaises(errors.EmptyAddressError, address.hex) self.assertRaises(errors.EmptyAddressError, address.bech32) address = Address(None) self.assertRaises(errors.EmptyAddressError, address.hex) self.assertRaises(errors.EmptyAddressError, address.bech32) with self.assertRaises(errors.BadAddressFormatError) as _: address = Address("bad")
def prepare_args_for_change_reward_address(args: Any): reward_address = Address(args.reward_address) args.data = 'changeRewardAddress@' + reward_address.hex() args.receiver = AUCTION_SMART_CONTRACT_ADDRESS if args.estimate_gas: args.gas_limit = estimate_system_sc_call(args, MetaChainSystemSCsCost.CHANGE_REWARD_ADDRESS)
def prepare_args_for_stake(args: Any): validators_file = ValidatorsFile(args.validators_file) reward_address = args.reward_address # TODO: Refactor, so that only address is received here. if args.pem: account = Account(pem_file=args.pem) elif args.keyfile and args.passfile: account = Account(key_file=args.keyfile, pass_file=args.passfile) num_of_nodes = validators_file.get_num_of_nodes() stake_data = 'stake@' + binascii.hexlify(num_of_nodes.to_bytes(1, byteorder="little")).decode() validators_list = validators_file.get_validators_list() for validator in validators_list: # get validator validator_pem = validator.get("pemFile") validator_pem = path.join(path.dirname(args.validators_file), validator_pem) seed, bls_key = parse_validator_pem(validator_pem) signed_message = sign_message_with_bls_key(account.address.pubkey().hex(), seed.hex()) stake_data += f"@{bls_key}@{signed_message}" if reward_address: reward_address = Address(args.reward_address) stake_data += '@' + reward_address.hex() args.receiver = AUCTION_SMART_CONTRACT_ADDRESS args.data = stake_data if args.estimate_gas: args.gas_limit = estimate_system_sc_call(args, MetaChainSystemSCsCost.STAKE, num_of_nodes)
def parse_args_for_stake(args): num_of_nodes = int(args.number_of_nodes) keys = args.nodes_public_keys.split(',') if num_of_nodes != len(keys): logger.info( "number of nodes is not equals with number of provided validators keys" ) return reward_address = args.reward_address stake_data = 'stake@' + binascii.hexlify( num_of_nodes.to_bytes(1, byteorder="little")).decode() for key in keys: stake_data += '@' + key + '@' + convert_to_hex('genesis') if reward_address: reward_address = Address(args.reward_address) stake_data += '@' + reward_address.hex() args.receiver = _STAKE_SMART_CONTRACT_ADDRESS args.data = stake_data if args.estimate_gas: args.gas_limit = estimate_system_sc_call(args, MetaChainSystemSCsCost.STAKE, len(keys)) return args
def do_bech32(args): encode = args.encode value = args.value address = Address(value) result = address.bech32() if encode else address.hex() print(result) return result
def parse_args_for_changing_reward_address(args): reward_address = Address(args.reward_address) args.data = 'changeRewardAddress@' + reward_address.hex() args.receiver = _STAKE_SMART_CONTRACT_ADDRESS if args.estimate_gas: args.gas_limit = estimate_system_sc_call( args, MetaChainSystemSCsCost.CHANGE_REWARD_ADDRESS) return args
def parse_args_for_stake(args: Any): validators_file = args.validators_file validators_data = _read_json_file(validators_file) reward_address = args.reward_address if args.pem: account = Account(pem_file=args.pem) elif args.keyfile and args.passfile: account = Account(key_file=args.keyfile, pass_file=args.passfile) num_of_nodes = len(validators_data.get("validators", [])) stake_data = 'stake@' + binascii.hexlify( num_of_nodes.to_bytes(1, byteorder="little")).decode() for validator in validators_data.get("validators", []): # get validator validator_pem = validator.get("pemFile") validator_pem = path.join(path.dirname(validators_file), validator_pem) seed, bls_key = parse_validator_pem(validator_pem) signed_message = sign_message_with_bls_key( account.address.pubkey().hex(), seed.hex()) stake_data += f"@{bls_key}@{signed_message}" if reward_address: reward_address = Address(args.reward_address) stake_data += '@' + reward_address.hex() args.receiver = _STAKE_SMART_CONTRACT_ADDRESS args.data = stake_data if args.estimate_gas: args.gas_limit = estimate_system_sc_call(args, MetaChainSystemSCsCost.STAKE, num_of_nodes) return args