Пример #1
0
    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')
Пример #2
0
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)
Пример #3
0
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)
Пример #4
0
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)
Пример #5
0
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
Пример #6
0
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
Пример #7
0
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)