-
Notifications
You must be signed in to change notification settings - Fork 39
/
unlock_conditions.py
100 lines (86 loc) · 2.45 KB
/
unlock_conditions.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
import json
from dotenv import load_dotenv
from iota_sdk import (
AddressUnlockCondition,
AliasAddress,
Client,
Ed25519Address,
Utils,
ExpirationUnlockCondition,
SimpleTokenScheme,
StorageDepositReturnUnlockCondition,
TimelockUnlockCondition,
GovernorAddressUnlockCondition,
StateControllerAddressUnlockCondition,
ImmutableAliasAddressUnlockCondition,
)
load_dotenv()
client = Client()
hex_address = Utils.bech32_to_hex(
'rms1qpllaj0pyveqfkwxmnngz2c488hfdtmfrj3wfkgxtk4gtyrax0jaxzt70zy')
alias_hex_address = Utils.bech32_to_hex(
'rms1pr59qm43mjtvhcajfmupqf23x29llam88yecn6pyul80rx099krmv2fnnux')
address_unlock_condition = AddressUnlockCondition(
Ed25519Address(hex_address)
)
token_scheme = SimpleTokenScheme(50, 0, 100)
# Most simple output
basic_output = client.build_basic_output(
unlock_conditions=[address_unlock_condition],
)
outputs = [basic_output]
# Output with storage deposit return
basic_output = client.build_basic_output(
unlock_conditions=[
address_unlock_condition,
StorageDepositReturnUnlockCondition(
1000000,
Ed25519Address(hex_address),
),
],
)
outputs.append(basic_output)
# Output with timelock
basic_output = client.build_basic_output(
unlock_conditions=[
address_unlock_condition,
TimelockUnlockCondition(1),
],
)
outputs.append(basic_output)
# Output with expiration
basic_output = client.build_basic_output(
unlock_conditions=[
address_unlock_condition,
ExpirationUnlockCondition(
1,
Ed25519Address(hex_address),
),
],
)
outputs.append(basic_output)
# Output with governor and state controller unlock condition
alias_output = client.build_alias_output(
alias_id='0x0000000000000000000000000000000000000000000000000000000000000000',
unlock_conditions=[
GovernorAddressUnlockCondition(
Ed25519Address(hex_address),
),
StateControllerAddressUnlockCondition(
Ed25519Address(hex_address),
),
],
)
outputs.append(alias_output)
# Output with immutable alias unlock condition
foundry_output = client.build_foundry_output(
serial_number=1,
token_scheme=token_scheme,
unlock_conditions=[
ImmutableAliasAddressUnlockCondition(
AliasAddress(alias_hex_address),
),
],
)
outputs.append(foundry_output)
print(json.dumps(list(map(lambda o: o.as_dict(), outputs)), indent=2))