Skip to content

Commit 97a172f

Browse files
committed
(feat) Updated queries and messages from the Permissions module to support the new version
1 parent cd67089 commit 97a172f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+2317
-1183
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
All notable changes to this project will be documented in this file.
44

5+
## [1.9.0] - 9999-99-99
6+
### Added
7+
- Added support for all new queries and messages from the new Permissions module
8+
59
## [1.8.0] - 2024-11-14
610
### Changed
711
- The markets initialization in AsyncClient has been modified to get markets information from the chain endpoints instead of the Indexer endpoints

buf.gen.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ inputs:
2020
# - git_repo: https://github.com/InjectiveLabs/wasmd
2121
# branch: v0.51.x-inj
2222
# subdir: proto
23-
- git_repo: https://github.com/InjectiveLabs/injective-core
24-
tag: v1.13.0
25-
subdir: proto
2623
# - git_repo: https://github.com/InjectiveLabs/injective-core
27-
# branch: master
24+
# tag: v1.13.0
2825
# subdir: proto
26+
- git_repo: https://github.com/InjectiveLabs/injective-core
27+
branch: f/permissions-rework
28+
subdir: proto
2929
- directory: proto

examples/chain_client/exchange/3_MsgInstantSpotMarketLaunch.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ async def main() -> None:
4343
min_price_tick_size=Decimal("0.001"),
4444
min_quantity_tick_size=Decimal("0.01"),
4545
min_notional=Decimal("1"),
46+
base_decimals=18,
47+
quote_decimals=6,
4648
)
4749

4850
# broadcast the transaction

examples/chain_client/permissions/1_MsgCreateNamespace.py

Lines changed: 55 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -26,26 +26,68 @@ async def main() -> None:
2626
pub_key = priv_key.to_public_key()
2727
address = pub_key.to_address()
2828

29-
blocked_address = "inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r"
3029
denom = "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test"
3130
role1 = composer.permissions_role(
32-
role=composer.DEFAULT_PERMISSIONS_EVERYONE_ROLE,
33-
permissions=composer.MINT_ACTION_PERMISSION
34-
| composer.RECEIVE_ACTION_PERMISSION
35-
| composer.BURN_ACTION_PERMISSION,
31+
name="EVERYONE",
32+
role_id=0,
33+
permissions=composer.PERMISSIONS_ACTION["RECEIVE"] | composer.PERMISSIONS_ACTION["SEND"],
34+
)
35+
role2 = composer.permissions_role(
36+
name="admin",
37+
role_id=1,
38+
permissions=composer.PERMISSIONS_ACTION["MODIFY_ROLE_PERMISSIONS"]
39+
| composer.PERMISSIONS_ACTION["MODIFY_ADDRESS_ROLES"],
40+
)
41+
role3 = composer.permissions_role(
42+
name="user",
43+
role_id=2,
44+
permissions=composer.PERMISSIONS_ACTION["MINT"]
45+
| composer.PERMISSIONS_ACTION["RECEIVE"]
46+
| composer.PERMISSIONS_ACTION["BURN"]
47+
| composer.PERMISSIONS_ACTION["SEND"],
48+
)
49+
50+
actor_role1 = composer.permissions_actor_roles(
51+
actor="inj1specificactoraddress",
52+
roles=["admin"],
53+
)
54+
actor_role2 = composer.permissions_actor_roles(
55+
actor="inj1anotheractoraddress",
56+
roles=["user"],
57+
)
58+
59+
role_manager = composer.permissions_role_manager(
60+
manager="inj1manageraddress",
61+
roles=["admin"],
62+
)
63+
64+
policy_status1 = composer.permissions_policy_status(
65+
action=composer.PERMISSIONS_ACTION["MINT"],
66+
is_disabled=False,
67+
is_sealed=False,
68+
)
69+
policy_status2 = composer.permissions_policy_status(
70+
action=composer.PERMISSIONS_ACTION["BURN"],
71+
is_disabled=False,
72+
is_sealed=False,
73+
)
74+
75+
policy_manager_capability = composer.permissions_policy_manager_capability(
76+
manager="inj1policymanageraddress",
77+
action=composer.PERMISSIONS_ACTION["MODIFY_CONTRACT_HOOK"],
78+
can_disable=True,
79+
can_seal=False,
3680
)
37-
role2 = composer.permissions_role(role="blacklisted", permissions=composer.UNDEFINED_ACTION_PERMISSION)
38-
address_role1 = composer.permissions_address_roles(address=blocked_address, roles=["blacklisted"])
3981

4082
message = composer.msg_create_namespace(
4183
sender=address.to_acc_bech32(),
4284
denom=denom,
43-
wasm_hook="",
44-
mints_paused=False,
45-
sends_paused=False,
46-
burns_paused=False,
47-
role_permissions=[role1, role2],
48-
address_roles=[address_role1],
85+
contract_hook="",
86+
role_permissions=[role1, role2, role3],
87+
actor_roles=[actor_role1, actor_role2],
88+
role_managers=[role_manager],
89+
policy_statuses=[policy_status1, policy_status2],
90+
policy_manager_capabilities=[policy_manager_capability],
4991
)
5092

5193
# broadcast the transaction

examples/chain_client/permissions/2_MsgDeleteNamespace.py

Lines changed: 0 additions & 42 deletions
This file was deleted.
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
import asyncio
2+
import os
3+
4+
import dotenv
5+
6+
from pyinjective.composer import Composer as ProtoMsgComposer
7+
from pyinjective.core.broadcaster import MsgBroadcasterWithPk
8+
from pyinjective.core.network import Network
9+
from pyinjective.wallet import PrivateKey
10+
11+
12+
async def main() -> None:
13+
dotenv.load_dotenv()
14+
private_key_in_hexa = os.getenv("INJECTIVE_PRIVATE_KEY")
15+
16+
# select network: local, testnet, mainnet
17+
network = Network.devnet()
18+
composer = ProtoMsgComposer(network=network.string())
19+
20+
message_broadcaster = MsgBroadcasterWithPk.new_using_simulation(
21+
network=network,
22+
private_key=private_key_in_hexa,
23+
)
24+
25+
priv_key = PrivateKey.from_hex(private_key_in_hexa)
26+
pub_key = priv_key.to_public_key()
27+
address = pub_key.to_address()
28+
29+
denom = "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test"
30+
31+
role1 = composer.permissions_role(
32+
name="EVERYONE",
33+
role_id=0,
34+
permissions=composer.PERMISSIONS_ACTION["UNSPECIFIED"], # revoke all permissions
35+
)
36+
role2 = composer.permissions_role(
37+
name="user",
38+
role_id=2,
39+
permissions=composer.PERMISSIONS_ACTION["RECEIVE"] | composer.PERMISSIONS_ACTION["SEND"],
40+
)
41+
42+
role_manager = composer.permissions_role_manager(
43+
manager="inj1manageraddress",
44+
roles=["admin", "user"],
45+
)
46+
47+
policy_status1 = composer.permissions_policy_status(
48+
action=composer.PERMISSIONS_ACTION["MINT"],
49+
is_disabled=True,
50+
is_sealed=False,
51+
)
52+
policy_status2 = composer.permissions_policy_status(
53+
action=composer.PERMISSIONS_ACTION["BURN"],
54+
is_disabled=False,
55+
is_sealed=True,
56+
)
57+
58+
policy_manager_capability = composer.permissions_policy_manager_capability(
59+
manager="inj1policymanageraddress",
60+
action=composer.PERMISSIONS_ACTION["MODIFY_ROLE_PERMISSIONS"],
61+
can_disable=True,
62+
can_seal=False,
63+
)
64+
65+
message = composer.msg_update_namespace(
66+
sender=address.to_acc_bech32(),
67+
denom=denom,
68+
contract_hook="inj19ld6swyldyujcn72j7ugnu9twafhs9wxlyye5m",
69+
role_permissions=[role1, role2],
70+
role_managers=[role_manager],
71+
policy_statuses=[policy_status1, policy_status2],
72+
policy_manager_capabilities=[policy_manager_capability],
73+
)
74+
75+
# broadcast the transaction
76+
result = await message_broadcaster.broadcast([message])
77+
print("---Transaction Response---")
78+
print(result)
79+
80+
81+
if __name__ == "__main__":
82+
asyncio.get_event_loop().run_until_complete(main())

examples/chain_client/permissions/4_MsgUpdateNamespaceRoles.py renamed to examples/chain_client/permissions/3_MsgUpdateActorRoles.py

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,20 +26,30 @@ async def main() -> None:
2626
pub_key = priv_key.to_public_key()
2727
address = pub_key.to_address()
2828

29-
blocked_address = "inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r"
3029
denom = "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test"
31-
role1 = composer.permissions_role(
32-
role=composer.DEFAULT_PERMISSIONS_EVERYONE_ROLE,
33-
permissions=composer.RECEIVE_ACTION_PERMISSION,
30+
31+
role_actors1 = composer.permissions_role_actors(
32+
role="admin",
33+
actors=["inj1actoraddress1", "inj1actoraddress2"],
34+
)
35+
role_actors2 = composer.permissions_role_actors(
36+
role="user",
37+
actors=["inj1actoraddress3"],
38+
)
39+
role_actors3 = composer.permissions_role_actors(
40+
role="user",
41+
actors=["inj1actoraddress4"],
42+
)
43+
role_actors4 = composer.permissions_role_actors(
44+
role="admin",
45+
actors=["inj1actoraddress5"],
3446
)
35-
role2 = composer.permissions_role(role="blacklisted", permissions=composer.UNDEFINED_ACTION_PERMISSION)
36-
address_role1 = composer.permissions_address_roles(address=blocked_address, roles=["blacklisted"])
3747

38-
message = composer.msg_update_namespace_roles(
48+
message = composer.msg_update_actor_roles(
3949
sender=address.to_acc_bech32(),
40-
namespace_denom=denom,
41-
role_permissions=[role1, role2],
42-
address_roles=[address_role1],
50+
denom=denom,
51+
role_actors_to_add=[role_actors1, role_actors2],
52+
role_actors_to_revoke=[role_actors3, role_actors4],
4353
)
4454

4555
# broadcast the transaction

examples/chain_client/permissions/3_MsgUpdateNamespace.py

Lines changed: 0 additions & 47 deletions
This file was deleted.

examples/chain_client/permissions/6_MsgClaimVoucher.py renamed to examples/chain_client/permissions/4_MsgClaimVoucher.py

File renamed without changes.

examples/chain_client/permissions/5_MsgRevokeNamespaceRoles.py

Lines changed: 0 additions & 46 deletions
This file was deleted.

0 commit comments

Comments
 (0)