def check_idempotency(f, args): cost, curried = curry(f, args) r = disassemble(curried) f_0, args_0 = uncurry(curried) assert disassemble(f_0) == disassemble(f) assert disassemble(args_0) == disassemble(args) return r
def genesis_coin_id_for_genesis_coin_checker( genesis_coin_checker: Program, ) -> Optional[bytes32]: """ Given a `genesis_coin_checker` program, pull out the genesis coin id. """ r = uncurry(genesis_coin_checker) if r is None: return r f, args = r if f != MOD: return None return args.first().as_atom()
def uncurry(self) -> Optional[Tuple["Program", "Program"]]: return uncurry(self)
def uncurry(self) -> Tuple["Program", "Program"]: r = uncurry(self) if r is None: return self, self.to(0) return r
def check_is_cc_puzzle(puzzle: Program): r = uncurry(puzzle) if r is None: return False inner_f, args = r return is_cc_mod(inner_f)