Cleanup imports, change bch ops to CScriptOps

This commit is contained in:
mainnet-pat
2024-10-20 17:30:26 +00:00
committed by tecnovert
parent b83f289013
commit 499b086b57
3 changed files with 71 additions and 98 deletions

View File

@@ -6,14 +6,14 @@
# file LICENSE or http://www.opensource.org/licenses/mit-license.php. # file LICENSE or http://www.opensource.org/licenses/mit-license.php.
from typing import Union from typing import Union
from basicswap.contrib.test_framework.messages import COutPoint, CTransaction, CTxIn, CTxOut from basicswap.contrib.test_framework.messages import COutPoint, CTransaction, CTxIn
from basicswap.util import b2h, b2i, ensure, i2h from basicswap.util import b2h, b2i, ensure, i2h
from basicswap.util.script import decodePushData, decodeScriptNum from basicswap.util.script import decodePushData, decodeScriptNum
from .btc import BTCInterface, ensure_op, find_vout_for_address_from_txobj, findOutput from .btc import BTCInterface, ensure_op, find_vout_for_address_from_txobj, findOutput
from basicswap.rpc import make_rpc_func from basicswap.rpc import make_rpc_func
from basicswap.chainparams import Coins from basicswap.chainparams import Coins
from basicswap.interface.contrib.bch_test_framework.cashaddress import Address from basicswap.interface.contrib.bch_test_framework.cashaddress import Address
from basicswap.util.crypto import hash160, sha256 from basicswap.util.crypto import sha256
from basicswap.interface.contrib.bch_test_framework.script import ( from basicswap.interface.contrib.bch_test_framework.script import (
OP_TXINPUTCOUNT, OP_TXINPUTCOUNT,
OP_1, OP_1,
@@ -45,9 +45,7 @@ from basicswap.interface.contrib.bch_test_framework.script import (
OP_CHECKSIG, OP_CHECKSIG,
OP_HASH256, OP_HASH256,
) )
from basicswap.contrib.test_framework.script import ( from basicswap.contrib.test_framework.script import CScript
CScript, CScriptOp,
)
from coincurve.keys import ( from coincurve.keys import (
PrivateKey, PrivateKey,
PublicKey, PublicKey,
@@ -245,39 +243,39 @@ class BCHInterface(BTCInterface):
# // Bob has BCH and/or CashTokens, wants XMR. # // Bob has BCH and/or CashTokens, wants XMR.
# #
# // Verify 1-in-1-out TX form # // Verify 1-in-1-out TX form
CScriptOp(OP_TXINPUTCOUNT), OP_TXINPUTCOUNT,
CScriptOp(OP_1), CScriptOp(OP_NUMEQUALVERIFY), OP_1, OP_NUMEQUALVERIFY,
CScriptOp(OP_TXOUTPUTCOUNT), OP_TXOUTPUTCOUNT,
CScriptOp(OP_1), CScriptOp(OP_NUMEQUALVERIFY), OP_1, OP_NUMEQUALVERIFY,
# // int miningFee # // int miningFee
mining_fee, mining_fee,
# // Verify pre-agreed mining fee and that the rest of BCH is forwarded # // Verify pre-agreed mining fee and that the rest of BCH is forwarded
# // to the output. # // to the output.
CScriptOp(OP_0), CScriptOp(OP_UTXOVALUE), OP_0, OP_UTXOVALUE,
CScriptOp(OP_0), CScriptOp(OP_OUTPUTVALUE), OP_0, OP_OUTPUTVALUE,
CScriptOp(OP_SUB), CScriptOp(OP_NUMEQUALVERIFY), OP_SUB, OP_NUMEQUALVERIFY,
# # // Verify that any CashTokens are forwarded to the output. # # // Verify that any CashTokens are forwarded to the output.
CScriptOp(OP_0), CScriptOp(OP_UTXOTOKENCATEGORY), OP_0, OP_UTXOTOKENCATEGORY,
CScriptOp(OP_0), CScriptOp(OP_OUTPUTTOKENCATEGORY), OP_0, OP_OUTPUTTOKENCATEGORY,
CScriptOp(OP_EQUALVERIFY), OP_EQUALVERIFY,
CScriptOp(OP_0), CScriptOp(OP_UTXOTOKENCOMMITMENT), OP_0, OP_UTXOTOKENCOMMITMENT,
CScriptOp(OP_0), CScriptOp(OP_OUTPUTTOKENCOMMITMENT), OP_0, OP_OUTPUTTOKENCOMMITMENT,
CScriptOp(OP_EQUALVERIFY), OP_EQUALVERIFY,
CScriptOp(OP_0), CScriptOp(OP_UTXOTOKENAMOUNT), OP_0, OP_UTXOTOKENAMOUNT,
CScriptOp(OP_0), CScriptOp(OP_OUTPUTTOKENAMOUNT), OP_0, OP_OUTPUTTOKENAMOUNT,
CScriptOp(OP_NUMEQUALVERIFY), OP_NUMEQUALVERIFY,
# // If sequence is not used then it is a regular swap TX. # // If sequence is not used then it is a regular swap TX.
CScriptOp(OP_0), CScriptOp(OP_INPUTSEQUENCENUMBER), OP_0, OP_INPUTSEQUENCENUMBER,
CScriptOp(OP_NOTIF), OP_NOTIF,
# // bytes aliceOutput # // bytes aliceOutput
out_1, out_1,
# // Verify that the BCH and/or CashTokens are forwarded to Alice's # // Verify that the BCH and/or CashTokens are forwarded to Alice's
# // output. # // output.
CScriptOp(OP_0), CScriptOp(OP_OUTPUTBYTECODE), OP_0, OP_OUTPUTBYTECODE,
CScriptOp(OP_OVER), CScriptOp(OP_EQUALVERIFY), OP_OVER, OP_EQUALVERIFY,
# // pubkey bobPubkeyVES # // pubkey bobPubkeyVES
public_key, public_key,
@@ -286,7 +284,7 @@ class BCHInterface(BTCInterface):
# // locking bytecode. # // locking bytecode.
# // By decrypting Bob's VES and publishing it, Alice reveals her # // By decrypting Bob's VES and publishing it, Alice reveals her
# // XMR key share to Bob. # // XMR key share to Bob.
CScriptOp(OP_CHECKDATASIG), OP_CHECKDATASIG,
# // If a TX using this path is mined then Alice gets her BCH. # // If a TX using this path is mined then Alice gets her BCH.
# // Bob uses the revealed XMR key share to collect his XMR. # // Bob uses the revealed XMR key share to collect his XMR.
@@ -294,22 +292,22 @@ class BCHInterface(BTCInterface):
# // Refund will become available when timelock expires, and it would # // Refund will become available when timelock expires, and it would
# // expire because Alice didn't collect on time, either of her own accord # // expire because Alice didn't collect on time, either of her own accord
# // or because Bob bailed out and witheld the encrypted signature. # // or because Bob bailed out and witheld the encrypted signature.
CScriptOp(OP_ELSE), OP_ELSE,
# // int timelock_0 # // int timelock_0
timelock, timelock,
# // Verify refund timelock. # // Verify refund timelock.
CScriptOp(OP_CHECKSEQUENCEVERIFY), CScriptOp(OP_DROP), OP_CHECKSEQUENCEVERIFY, OP_DROP,
# // bytes refundLockingBytecode # // bytes refundLockingBytecode
out_2, out_2,
# // Verify that the BCH and/or CashTokens are forwarded to Refund # // Verify that the BCH and/or CashTokens are forwarded to Refund
# // contract. # // contract.
CScriptOp(OP_0), CScriptOp(OP_OUTPUTBYTECODE), OP_0, OP_OUTPUTBYTECODE,
CScriptOp(OP_EQUAL), OP_EQUAL,
# // BCH and/or CashTokens are simply forwarded to Refund contract. # // BCH and/or CashTokens are simply forwarded to Refund contract.
CScriptOp(OP_ENDIF) OP_ENDIF
]) ])
def pubkey_to_segwit_address(self, pk: bytes) -> str: def pubkey_to_segwit_address(self, pk: bytes) -> str:
@@ -334,9 +332,9 @@ class BCHInterface(BTCInterface):
script = bytes.fromhex(script) script = bytes.fromhex(script)
return CScript([ return CScript([
CScriptOp(OP_HASH256), OP_HASH256,
sha256(sha256(script)), sha256(sha256(script)),
CScriptOp(OP_EQUAL), OP_EQUAL,
]) ])
def createSCLockTx(self, value: int, script: bytearray, vkbv: bytes = None) -> bytes: def createSCLockTx(self, value: int, script: bytearray, vkbv: bytes = None) -> bytes:
@@ -347,11 +345,11 @@ class BCHInterface(BTCInterface):
def getScriptForPubkeyHash(self, pkh: bytes) -> CScript: def getScriptForPubkeyHash(self, pkh: bytes) -> CScript:
return CScript([ return CScript([
CScriptOp(OP_DUP), OP_DUP,
CScriptOp(OP_HASH160), OP_HASH160,
pkh, pkh,
CScriptOp(OP_EQUALVERIFY), OP_EQUALVERIFY,
CScriptOp(OP_CHECKSIG), OP_CHECKSIG,
]) ])
def getTxSize(self, tx: CTransaction) -> int: def getTxSize(self, tx: CTransaction) -> int:

View File

@@ -5,36 +5,39 @@
# file LICENSE or http://www.opensource.org/licenses/mit-license.php. # file LICENSE or http://www.opensource.org/licenses/mit-license.php.
OP_TXINPUTCOUNT = 0xc3 from basicswap.contrib.test_framework.script import CScriptOp
OP_1 = 0x51
OP_NUMEQUALVERIFY = 0x9d
OP_TXOUTPUTCOUNT = 0xc4 OP_TXINPUTCOUNT = CScriptOp(0xc3)
OP_0 = 0x00 OP_1 = CScriptOp(0x51)
OP_UTXOVALUE = 0xc6 OP_NUMEQUALVERIFY = CScriptOp(0x9d)
OP_OUTPUTVALUE = 0xcc OP_TXOUTPUTCOUNT = CScriptOp(0xc4)
OP_SUB = 0x94 OP_0 = CScriptOp(0x00)
OP_UTXOTOKENCATEGORY = 0xce OP_UTXOVALUE = CScriptOp(0xc6)
OP_OUTPUTTOKENCATEGORY = 0xd1 OP_OUTPUTVALUE = CScriptOp(0xcc)
OP_EQUALVERIFY = 0x88 OP_SUB = CScriptOp(0x94)
OP_UTXOTOKENCOMMITMENT = 0xcf OP_UTXOTOKENCATEGORY = CScriptOp(0xce)
OP_OUTPUTTOKENCOMMITMENT = 0xd2 OP_OUTPUTTOKENCATEGORY = CScriptOp(0xd1)
OP_UTXOTOKENAMOUNT = 0xd0 OP_EQUALVERIFY = CScriptOp(0x88)
OP_OUTPUTTOKENAMOUNT = 0xd3 OP_UTXOTOKENCOMMITMENT = CScriptOp(0xcf)
OP_INPUTSEQUENCENUMBER = 0xcb OP_OUTPUTTOKENCOMMITMENT = CScriptOp(0xd2)
OP_NOTIF = 0x64 OP_UTXOTOKENAMOUNT = CScriptOp(0xd0)
OP_OUTPUTBYTECODE = 0xcd OP_OUTPUTTOKENAMOUNT = CScriptOp(0xd3)
OP_OVER = 0x78 OP_INPUTSEQUENCENUMBER = CScriptOp(0xcb)
OP_CHECKDATASIG = 0xba OP_NOTIF = CScriptOp(0x64)
OP_CHECKDATASIGVERIFY = 0xbb OP_OUTPUTBYTECODE = CScriptOp(0xcd)
OP_ELSE = 0x67 OP_OVER = CScriptOp(0x78)
OP_CHECKSEQUENCEVERIFY = 0xb2 OP_CHECKDATASIG = CScriptOp(0xba)
OP_DROP = 0x75 OP_CHECKDATASIGVERIFY = CScriptOp(0xbb)
OP_EQUAL = 0x87 OP_ELSE = CScriptOp(0x67)
OP_ENDIF = 0x68 OP_CHECKSEQUENCEVERIFY = CScriptOp(0xb2)
OP_HASH256 = 0xaa OP_DROP = CScriptOp(0x75)
OP_PUSHBYTES_32 = 0x20 OP_EQUAL = CScriptOp(0x87)
OP_DUP = 0x76 OP_ENDIF = CScriptOp(0x68)
OP_HASH160 = 0xa9 OP_HASH256 = CScriptOp(0xaa)
OP_CHECKSIG = 0xac OP_PUSHBYTES_32 = CScriptOp(0x20)
OP_SHA256 = 0xa8 OP_DUP = CScriptOp(0x76)
OP_VERIFY = 0x69 OP_HASH160 = CScriptOp(0xa9)
OP_CHECKSIG = CScriptOp(0xac)
OP_SHA256 = CScriptOp(0xa8)
OP_VERIFY = CScriptOp(0x69)

View File

@@ -6,34 +6,6 @@
import traceback import traceback
import unittest
from basicswap.interface.contrib.bch_test_framework.script import (
OP_TXINPUTCOUNT,
OP_1,
OP_NUMEQUALVERIFY,
OP_TXOUTPUTCOUNT,
OP_0,
OP_UTXOVALUE,
OP_OUTPUTVALUE,
OP_SUB,
OP_UTXOTOKENCATEGORY,
OP_OUTPUTTOKENCATEGORY,
OP_EQUALVERIFY,
OP_UTXOTOKENCOMMITMENT,
OP_OUTPUTTOKENCOMMITMENT,
OP_UTXOTOKENAMOUNT,
OP_OUTPUTTOKENAMOUNT,
OP_INPUTSEQUENCENUMBER,
OP_NOTIF,
OP_OUTPUTBYTECODE,
OP_OVER,
OP_CHECKDATASIG,
OP_ELSE,
OP_CHECKSEQUENCEVERIFY,
OP_DROP,
OP_EQUAL,
OP_ENDIF,
)
from basicswap.util import ( from basicswap.util import (
ensure, ensure,
) )