def test_addresses(self): pubkey = unhexlify('c5f54ba980fcbb657dbaaa42700539b207873e134d2375efeab5f1ab52f87844') address = nem.compute_address(pubkey, NEM_NETWORK_MAINNET) self.assertEqual(address, 'NDD2CT6LQLIYQ56KIXI3ENTM6EK3D44P5JFXJ4R4') pubkey = unhexlify('114171230ad6f8522a000cdc73fbc5c733b30bb71f2b146ccbdf34499f79a810') address = nem.compute_address(pubkey, NEM_NETWORK_MAINNET) self.assertEqual(address, 'NCUKWDY3J3THKQHAKOK5ALF6ANJQABZHCH7VN6DP')
async def ask_aggregate_modification( ctx: Context, common: NEMTransactionCommon, mod: NEMAggregateModification, multisig: bool, ) -> None: if not multisig: await require_confirm_text(ctx, "Convert account to multisig account?") for m in mod.modifications: if m.type == NEMModificationType.CosignatoryModification_Add: action = "Add" else: action = "Remove" address = nem.compute_address(m.public_key, common.network) await _require_confirm_address(ctx, action + " cosignatory", address) if mod.relative_change: if multisig: action = "Modify the number of cosignatories by " else: action = "Set minimum cosignatories to " await require_confirm_text(ctx, action + str(mod.relative_change) + "?") await require_confirm_final(ctx, common.fee)
async def ask_multisig(ctx, msg: NEMSignTx): address = nem.compute_address(msg.multisig.signer, msg.transaction.network) if msg.cosigning: await _require_confirm_address(ctx, 'Cosign transaction for', address) else: await _require_confirm_address(ctx, 'Initiate transaction for', address) await require_confirm_fee(ctx, 'Confirm multisig fee', msg.transaction.fee)
async def ask_multisig(ctx: Context, msg: NEMSignTx) -> None: assert msg.multisig is not None # sign_tx assert msg.multisig.signer is not None # sign_tx address = nem.compute_address(msg.multisig.signer, msg.transaction.network) if msg.cosigning: await _require_confirm_address(ctx, "Cosign transaction for", address) else: await _require_confirm_address(ctx, "Initiate transaction for", address) await require_confirm_fee(ctx, "Confirm multisig fee", msg.transaction.fee)
def serialize_multisig_signature(common: NEMTransactionCommon, public_key: bytes, inner: bytes, address_public_key: bytes): address = nem.compute_address(address_public_key, common.network) w = write_common(common, bytearray(public_key), NEM_TRANSACTION_TYPE_MULTISIG_SIGNATURE) digest = hashlib.sha3_256(inner).digest(True) write_uint32(w, 4 + len(digest)) write_bytes_with_length(w, digest) write_bytes_with_length(w, address) return w
def serialize_multisig_signature( common: NEMTransactionCommon, public_key: bytes, inner: bytes, address_public_key: bytes, ) -> bytes: w = serialize_tx_common(common, public_key, NEM_TRANSACTION_TYPE_MULTISIG_SIGNATURE) digest = hashlib.sha3_256(inner, keccak=True).digest() address = nem.compute_address(address_public_key, common.network) write_uint32_le(w, 4 + len(digest)) write_bytes_with_len(w, digest) write_bytes_with_len(w, address.encode()) return w
async def ask_aggregate_modification(ctx, common: NEMTransactionCommon, mod: NEMAggregateModification, multisig: bool): if not multisig: await require_confirm_text(ctx, 'Convert account to multisig account?') for m in mod.modifications: if m.type == NEMModificationType.CosignatoryModification_Add: action = 'Add' else: action = 'Remove' address = nem.compute_address(m.public_key, common.network) await _require_confirm_address(ctx, action + ' cosignatory', address) if mod.relative_change: if multisig: action = 'Modify the number of cosignatories by ' else: action = 'Set minimum cosignatories to ' await require_confirm_text(ctx, action + str(mod.relative_change) + '?') await require_confirm_final(ctx, common.fee)