Fix tests.
This commit is contained in:
parent
3e23c22853
commit
a57db60697
|
@ -1,4 +1,4 @@
|
||||||
from typing import List, Optional, Dict
|
from typing import List, Optional, Dict, Tuple
|
||||||
|
|
||||||
from blspy import PrivateKey, AugSchemeMPL, G1Element, G2Element
|
from blspy import PrivateKey, AugSchemeMPL, G1Element, G2Element
|
||||||
|
|
||||||
|
@ -129,7 +129,7 @@ class WalletTool:
|
||||||
condition_dic: Dict[ConditionOpcode, List[ConditionVarPair]],
|
condition_dic: Dict[ConditionOpcode, List[ConditionVarPair]],
|
||||||
fee: int = 0,
|
fee: int = 0,
|
||||||
secretkey=None,
|
secretkey=None,
|
||||||
) -> List[Tuple[Program, CoinSolution]]:
|
) -> List[CoinSolution]:
|
||||||
spends = []
|
spends = []
|
||||||
spend_value = coin.amount
|
spend_value = coin.amount
|
||||||
puzzle_hash = coin.puzzle_hash
|
puzzle_hash = coin.puzzle_hash
|
||||||
|
|
|
@ -69,7 +69,9 @@ def puzzle_for_pk(public_key: PublicKeyProgram) -> Program:
|
||||||
return MOD.curry(public_key)
|
return MOD.curry(public_key)
|
||||||
|
|
||||||
|
|
||||||
def solution_with_delegated_puzzle(delegated_puzzle: Program, solution: Program) -> Program:
|
def solution_with_delegated_puzzle(
|
||||||
|
delegated_puzzle: Program, solution: Program
|
||||||
|
) -> Program:
|
||||||
return Program.to([[], delegated_puzzle, solution])
|
return Program.to([[], delegated_puzzle, solution])
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,10 @@ from src.util.condition_tools import (
|
||||||
)
|
)
|
||||||
from src.util.ints import uint64, uint32
|
from src.util.ints import uint64, uint32
|
||||||
from src.wallet.abstract_wallet import AbstractWallet
|
from src.wallet.abstract_wallet import AbstractWallet
|
||||||
from src.wallet.puzzles.p2_delegated_puzzle import puzzle_for_pk, solution_for_conditions
|
from src.wallet.puzzles.p2_delegated_puzzle import (
|
||||||
|
puzzle_for_pk,
|
||||||
|
solution_for_conditions,
|
||||||
|
)
|
||||||
from src.wallet.puzzles.puzzle_utils import (
|
from src.wallet.puzzles.puzzle_utils import (
|
||||||
make_assert_my_coin_id_condition,
|
make_assert_my_coin_id_condition,
|
||||||
make_assert_time_exceeds_condition,
|
make_assert_time_exceeds_condition,
|
||||||
|
@ -273,9 +276,7 @@ class Wallet(AbstractWallet):
|
||||||
def secret_key_for_public_key(self, public_key: G1Element) -> Optional[PrivateKey]:
|
def secret_key_for_public_key(self, public_key: G1Element) -> Optional[PrivateKey]:
|
||||||
return self._pk2sk.get(bytes(public_key))
|
return self._pk2sk.get(bytes(public_key))
|
||||||
|
|
||||||
async def sign_transaction(
|
async def sign_transaction(self, coin_solutions: List[CoinSolution]) -> SpendBundle:
|
||||||
self, coin_solutions: List[CoinSolution]
|
|
||||||
) -> SpendBundle:
|
|
||||||
signatures = []
|
signatures = []
|
||||||
|
|
||||||
for coin_solution in coin_solutions:
|
for coin_solution in coin_solutions:
|
||||||
|
@ -288,7 +289,9 @@ class Wallet(AbstractWallet):
|
||||||
coin_solution.solution
|
coin_solution.solution
|
||||||
)
|
)
|
||||||
if err or conditions_dict is None:
|
if err or conditions_dict is None:
|
||||||
error_msg = f"Sign transaction failed, con:{conditions_dict}, error: {err}"
|
error_msg = (
|
||||||
|
f"Sign transaction failed, con:{conditions_dict}, error: {err}"
|
||||||
|
)
|
||||||
self.log.error(error_msg)
|
self.log.error(error_msg)
|
||||||
raise ValueError(error_msg)
|
raise ValueError(error_msg)
|
||||||
|
|
||||||
|
@ -298,8 +301,9 @@ class Wallet(AbstractWallet):
|
||||||
):
|
):
|
||||||
secret_key = self.secret_key_for_public_key(_)
|
secret_key = self.secret_key_for_public_key(_)
|
||||||
if secret_key is None:
|
if secret_key is None:
|
||||||
self.log.error(f"no secret key for {_}")
|
e_msg = f"no secret key for {_}"
|
||||||
return None
|
self.log.error(e_msg)
|
||||||
|
raise ValueError(e_msg)
|
||||||
signature = AugSchemeMPL.sign(secret_key, msg)
|
signature = AugSchemeMPL.sign(secret_key, msg)
|
||||||
signatures.append(signature)
|
signatures.append(signature)
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import asyncio
|
import asyncio
|
||||||
from time import time
|
from time import time
|
||||||
from typing import List, Tuple
|
from typing import List
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
|
@ -9,7 +9,6 @@ from src.protocols import full_node_protocol
|
||||||
from src.types.coin_solution import CoinSolution
|
from src.types.coin_solution import CoinSolution
|
||||||
from src.types.condition_var_pair import ConditionVarPair
|
from src.types.condition_var_pair import ConditionVarPair
|
||||||
from src.types.condition_opcodes import ConditionOpcode
|
from src.types.condition_opcodes import ConditionOpcode
|
||||||
from src.types.program import Program
|
|
||||||
from src.types.spend_bundle import SpendBundle
|
from src.types.spend_bundle import SpendBundle
|
||||||
from src.util.condition_tools import (
|
from src.util.condition_tools import (
|
||||||
conditions_for_solution,
|
conditions_for_solution,
|
||||||
|
@ -868,25 +867,23 @@ class TestMempool:
|
||||||
):
|
):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
unsigned: List[
|
unsigned: List[CoinSolution] = wallet_a.generate_unsigned_transaction(
|
||||||
Tuple[Program, CoinSolution]
|
|
||||||
] = wallet_a.generate_unsigned_transaction(
|
|
||||||
1000, receiver_puzzlehash, block.get_coinbase(), {}, 0
|
1000, receiver_puzzlehash, block.get_coinbase(), {}, 0
|
||||||
)
|
)
|
||||||
assert len(unsigned) == 1
|
assert len(unsigned) == 1
|
||||||
|
coin_solution = unsigned[0]
|
||||||
|
|
||||||
puzzle, solution = unsigned[0]
|
err, con, cost = conditions_for_solution(coin_solution.solution)
|
||||||
code_ = [puzzle, solution.solution]
|
|
||||||
sexp = Program.to(code_)
|
|
||||||
|
|
||||||
err, con, cost = conditions_for_solution(sexp)
|
|
||||||
assert con is not None
|
assert con is not None
|
||||||
|
|
||||||
|
puzzle, solution = list(coin_solution.solution.as_iter())
|
||||||
conditions_dict = conditions_by_opcode(con)
|
conditions_dict = conditions_by_opcode(con)
|
||||||
pkm_pairs = pkm_pairs_for_conditions_dict(conditions_dict, solution.coin.name())
|
pkm_pairs = pkm_pairs_for_conditions_dict(
|
||||||
|
conditions_dict, coin_solution.coin.name()
|
||||||
|
)
|
||||||
assert len(pkm_pairs) == 1
|
assert len(pkm_pairs) == 1
|
||||||
|
|
||||||
assert pkm_pairs[0][1] == solution.solution.first().get_tree_hash()
|
assert pkm_pairs[0][1] == solution.first().get_tree_hash()
|
||||||
|
|
||||||
spend_bundle = wallet_a.sign_transaction(unsigned)
|
spend_bundle = wallet_a.sign_transaction(unsigned)
|
||||||
assert spend_bundle is not None
|
assert spend_bundle is not None
|
||||||
|
|
Loading…
Reference in New Issue