def address_from_digest(digest: Digest) -> Address: """ Generates an address from a private key digest. """ address_trits: List[int] = [0] * (Address.LEN * TRITS_PER_TRYTE) sponge = Kerl() sponge.absorb(digest.as_trits()) sponge.squeeze(address_trits) return Address.from_trits( trits=address_trits, key_index=digest.key_index, security_level=digest.security_level, )
def add_digest(self, digest: Digest) -> None: """ Absorbs a digest into the sponge. .. important:: Keep track of the order that digests are added! To spend inputs from a multisig address, you must provide the private keys in the same order! References: - https://github.com/iotaledger/wiki/blob/master/multisigs.md#spending-inputs """ if self._address: raise ValueError( 'Cannot add digests once an address is extracted.') self._sponge.absorb(digest.as_trits()) self._digests.append(digest)