Skip to content

Commit

Permalink
Bump default major version to 9
Browse files Browse the repository at this point in the history
  • Loading branch information
cffls committed Aug 30, 2024
1 parent 6e8f795 commit 19e6177
Show file tree
Hide file tree
Showing 7 changed files with 132 additions and 115 deletions.
6 changes: 6 additions & 0 deletions integration-test/configs/local-chang/conway-genesis.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
{
"protocolParams": {
"protocolVersion": {
"minor": 0,
"major": 9
}
},
"poolVotingThresholds": {
"committeeNormal": 0.65,
"committeeNoConfidence": 0.65,
Expand Down
2 changes: 1 addition & 1 deletion integration-test/configs/local-chang/shelley-genesis.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
"keyDeposit": 1000000,
"protocolVersion": {
"minor": 0,
"major": 7
"major": 9
},
"poolDeposit": 1000000,
"a0": 0.0,
Expand Down
6 changes: 4 additions & 2 deletions integration-test/test/test_plutus.py
Original file line number Diff line number Diff line change
Expand Up @@ -389,10 +389,12 @@ def test_plutus_v3(self):

with open("./plutus_scripts/helloworldV3.plutus", "r") as f:
script_hex = f.read()
hello_world_script = cbor2.loads(bytes.fromhex(script_hex))
hello_world_script = bytes.fromhex(script_hex)

script_hash = plutus_script_hash(PlutusV3Script(hello_world_script))

print("script_hash: ", script_hash)

script_address = Address(script_hash, network=self.NETWORK)

giver_address = Address(self.payment_vkey.hash(), network=self.NETWORK)
Expand All @@ -417,7 +419,7 @@ def test_plutus_v3(self):

utxo_to_spend = self.chain_context.utxos(script_address)[0]

taker_address = Address(self.extended_payment_vkey.hash(), network=self.NETWORK)
taker_address = Address(self.payment_vkey.hash(), network=self.NETWORK)

builder = TransactionBuilder(self.chain_context)

Expand Down
184 changes: 92 additions & 92 deletions poetry.lock

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions pycardano/transaction.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
from pycardano.metadata import AuxiliaryData
from pycardano.nativescript import NativeScript
from pycardano.network import Network
from pycardano.plutus import Datum, PlutusV1Script, PlutusV2Script, RawPlutusData
from pycardano.plutus import Datum, PlutusV1Script, PlutusV2Script, PlutusV3Script, RawPlutusData
from pycardano.serialization import (
ArrayCBORSerializable,
CBORSerializable,
Expand Down Expand Up @@ -370,7 +370,7 @@ class TransactionOutput(CBORSerializable):

datum: Optional[Datum] = None

script: Optional[Union[NativeScript, PlutusV1Script, PlutusV2Script]] = None
script: Optional[Union[NativeScript, PlutusV1Script, PlutusV2Script, PlutusV3Script]] = None

post_alonzo: Optional[bool] = False

Expand Down
43 changes: 26 additions & 17 deletions pycardano/txbuilder.py
Original file line number Diff line number Diff line change
Expand Up @@ -290,9 +290,11 @@ def add_script_input(
for candidate_script, candidate_utxo in candidate_scripts:
if script_hash(candidate_script) != input_script_hash:
continue

found_valid_script = True
self._inputs_to_scripts[utxo] = candidate_script
if candidate_utxo is not None:

if candidate_utxo is not None and candidate_utxo != utxo:
self.reference_inputs.add(candidate_utxo)
self._reference_scripts.append(candidate_script)
break
Expand Down Expand Up @@ -944,10 +946,14 @@ def _build_full_fake_tx(self) -> Transaction:
)
return tx

def build_witness_set(self) -> TransactionWitnessSet:
def build_witness_set(self, remove_dup_script=False) -> TransactionWitnessSet:
"""Build a transaction witness set, excluding verification key witnesses.
This function is especially useful when the transaction involves Plutus scripts.
Args:
remove_dup_script (bool): Whether to remove scripts, that are already attached to inputs,
from the witness set.
Returns:
TransactionWitnessSet: A transaction witness set without verification key witnesses.
"""
Expand All @@ -957,21 +963,24 @@ def build_witness_set(self) -> TransactionWitnessSet:
plutus_v2_scripts: List[PlutusV2Script] = []
plutus_v3_scripts: List[PlutusV3Script] = []

input_scripts = {script_hash(i.output.script) for i in self.inputs if i.output.script is not None} if remove_dup_script else {}

for script in self.scripts:
if isinstance(script, NativeScript):
native_scripts.append(script)
elif isinstance(script, PlutusV1Script):
plutus_v1_scripts.append(script)
elif type(script) is bytes:
plutus_v1_scripts.append(PlutusV1Script(script))
elif isinstance(script, PlutusV2Script):
plutus_v2_scripts.append(script)
elif isinstance(script, PlutusV3Script):
plutus_v3_scripts.append(script)
else:
raise InvalidArgumentException(
f"Unsupported script type: {type(script)}"
)
if script_hash(script) not in input_scripts:
if isinstance(script, NativeScript):
native_scripts.append(script)
elif isinstance(script, PlutusV1Script):
plutus_v1_scripts.append(script)
elif type(script) is bytes:
plutus_v1_scripts.append(PlutusV1Script(script))
elif isinstance(script, PlutusV2Script):
plutus_v2_scripts.append(script)
elif isinstance(script, PlutusV3Script):
plutus_v3_scripts.append(script)
else:
raise InvalidArgumentException(
f"Unsupported script type: {type(script)}"
)

return TransactionWitnessSet(
native_scripts=native_scripts if native_scripts else None,
Expand Down Expand Up @@ -1432,7 +1441,7 @@ def build_and_sign(
auto_ttl_offset=auto_ttl_offset,
auto_required_signers=auto_required_signers,
)
witness_set = self.build_witness_set()
witness_set = self.build_witness_set(True)
witness_set.vkey_witnesses = []

for signing_key in set(signing_keys):
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ frozendict = "^2.3.8"
frozenlist = "^1.3.3"
cachetools = "^5.3.0"
docker = "^7.1.0"
ogmios = {git = "https://gitlab.com/cffls/ogmios-python.git"}
ogmios = {git = "https://gitlab.com/viperscience/ogmios-python.git"}
requests = "^2.32.3"
websockets = "^13.0"

Expand Down

0 comments on commit 19e6177

Please sign in to comment.