def bits(self, l): return i2lebsp(l, self.s)
def merkle_crh(layer, left, right): assert layer < MERKLE_DEPTH assert len(left) == 255 assert len(right) == 255 l = i2lebsp(6, MERKLE_DEPTH - 1 - layer) return pedersen_hash(b'Zcash_PH', l + left + right)
def note_commit(rcm, g_d, pk_d, v): return windowed_pedersen_commitment(rcm, [1] * 6 + i2lebsp(64, v) + g_d + pk_d)
def diversifier(self, j): d = lebs2osp(ff1_aes256_encrypt(self.dk(), b'', i2lebsp(88, j))) return d if diversify_hash(d) else None
def toBinaryString(x): return ''.join(str(c) for c in i2lebsp(256, x))[:240]