Exemplo n.º 1
0
    def make_solution(self, condition_dic: Dict[ConditionOpcode, List[ConditionWithArgs]]) -> Program:
        ret = []

        for con_list in condition_dic.values():
            for cvp in con_list:
                if cvp.opcode == ConditionOpcode.CREATE_COIN:
                    ret.append(make_create_coin_condition(cvp.vars[0], cvp.vars[1]))
                if cvp.opcode == ConditionOpcode.CREATE_ANNOUNCEMENT:
                    ret.append(make_create_announcement(cvp.vars[0]))
                if cvp.opcode == ConditionOpcode.AGG_SIG:
                    ret.append(make_assert_aggsig_condition(cvp.vars[0]))
                if cvp.opcode == ConditionOpcode.ASSERT_ANNOUNCEMENT:
                    ret.append(make_assert_announcement(cvp.vars[0]))
                if cvp.opcode == ConditionOpcode.ASSERT_SECONDS_NOW_EXCEEDS:
                    ret.append(make_assert_seconds_now_exceeds_condition(cvp.vars[0]))
                if cvp.opcode == ConditionOpcode.ASSERT_MY_COIN_ID:
                    ret.append(make_assert_my_coin_id_condition(cvp.vars[0]))
                if cvp.opcode == ConditionOpcode.ASSERT_HEIGHT_NOW_EXCEEDS:
                    ret.append(make_assert_height_now_exceeds_condition(cvp.vars[0]))
                if cvp.opcode == ConditionOpcode.ASSERT_HEIGHT_AGE_EXCEEDS:
                    ret.append(make_assert_height_age_exceeds_condition(cvp.vars[0]))
                if cvp.opcode == ConditionOpcode.RESERVE_FEE:
                    ret.append(make_reserve_fee_condition(cvp.vars[0]))
                if cvp.opcode == ConditionOpcode.ASSERT_MY_PARENT_ID:
                    ret.append(make_assert_my_parent_id(cvp.vars[0]))
                if cvp.opcode == ConditionOpcode.ASSERT_MY_PUZZLEHASH:
                    ret.append(make_assert_my_puzzlehash(cvp.vars[0]))
                if cvp.opcode == ConditionOpcode.ASSERT_MY_AMOUNT:
                    ret.append(make_assert_my_amount(cvp.vars[0]))
        return solution_for_conditions(Program.to(ret))
Exemplo n.º 2
0
 def make_solution(
     self,
     primaries: Optional[List[Dict[str, Any]]] = None,
     min_time=0,
     me=None,
     coin_announcements=None,
     coin_announcements_to_assert=None,
     puzzle_announcements=None,
     puzzle_announcements_to_assert=None,
     fee=0,
 ) -> Program:
     assert fee >= 0
     condition_list = []
     if primaries:
         for primary in primaries:
             condition_list.append(make_create_coin_condition(primary["puzzlehash"], primary["amount"]))
     if min_time > 0:
         condition_list.append(make_assert_seconds_now_exceeds_condition(min_time))
     if me:
         condition_list.append(make_assert_my_coin_id_condition(me["id"]))
     if fee:
         condition_list.append(make_reserve_fee_condition(fee))
     if coin_announcements:
         for announcement in coin_announcements:
             condition_list.append(make_create_coin_announcement(announcement))
     if coin_announcements_to_assert:
         for announcement_hash in coin_announcements_to_assert:
             condition_list.append(make_assert_coin_announcement(announcement_hash))
     if puzzle_announcements:
         for announcement in puzzle_announcements:
             condition_list.append(make_create_puzzle_announcement(announcement))
     if puzzle_announcements_to_assert:
         for announcement_hash in puzzle_announcements_to_assert:
             condition_list.append(make_assert_puzzle_announcement(announcement_hash))
     return solution_for_conditions(condition_list)
Exemplo n.º 3
0
 def make_solution(
     self,
     primaries: List[AmountWithPuzzlehash],
     min_time=0,
     me=None,
     coin_announcements: Optional[Set[bytes]] = None,
     coin_announcements_to_assert: Optional[Set[bytes32]] = None,
     puzzle_announcements: Optional[Set[bytes32]] = None,
     puzzle_announcements_to_assert: Optional[Set[bytes32]] = None,
     fee=0,
 ) -> Program:
     assert fee >= 0
     condition_list = []
     if len(primaries) > 0:
         for primary in primaries:
             if "memos" in primary:
                 memos: Optional[List[bytes]] = primary["memos"]
                 if memos is not None and len(memos) == 0:
                     memos = None
             else:
                 memos = None
             condition_list.append(
                 make_create_coin_condition(primary["puzzlehash"],
                                            primary["amount"], memos))
     if min_time > 0:
         condition_list.append(
             make_assert_absolute_seconds_exceeds_condition(min_time))
     if me:
         condition_list.append(make_assert_my_coin_id_condition(me["id"]))
     if fee:
         condition_list.append(make_reserve_fee_condition(fee))
     if coin_announcements:
         for announcement in coin_announcements:
             condition_list.append(
                 make_create_coin_announcement(announcement))
     if coin_announcements_to_assert:
         for announcement_hash in coin_announcements_to_assert:
             condition_list.append(
                 make_assert_coin_announcement(announcement_hash))
     if puzzle_announcements:
         for announcement in puzzle_announcements:
             condition_list.append(
                 make_create_puzzle_announcement(announcement))
     if puzzle_announcements_to_assert:
         for announcement_hash in puzzle_announcements_to_assert:
             condition_list.append(
                 make_assert_puzzle_announcement(announcement_hash))
     return solution_for_conditions(condition_list)