Skip to content

Commit cb62eb9

Browse files
committed
(feat) Added support for permissions module's messages and queries
1 parent 856c464 commit cb62eb9

17 files changed

+1047
-1
lines changed
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
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+
blocked_address = "inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r"
30+
denom = "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test"
31+
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,
36+
)
37+
role2 = composer.permissions_role(role="blacklisted", permissions=composer.UNDEFINED_ACTION_PERMISSION)
38+
address_role1 = composer.permissions_address_roles(address=blocked_address, roles=["blacklisted"])
39+
40+
message = composer.msg_create_namespace(
41+
sender=address.to_acc_bech32(),
42+
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],
49+
)
50+
51+
# broadcast the transaction
52+
result = await message_broadcaster.broadcast([message])
53+
print("---Transaction Response---")
54+
print(result)
55+
56+
57+
if __name__ == "__main__":
58+
asyncio.get_event_loop().run_until_complete(main())
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
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+
message = composer.msg_delete_namespace(
31+
sender=address.to_acc_bech32(),
32+
namespace_denom=denom,
33+
)
34+
35+
# broadcast the transaction
36+
result = await message_broadcaster.broadcast([message])
37+
print("---Transaction Response---")
38+
print(result)
39+
40+
41+
if __name__ == "__main__":
42+
asyncio.get_event_loop().run_until_complete(main())
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
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+
message = composer.msg_update_namespace(
32+
sender=address.to_acc_bech32(),
33+
namespace_denom=denom,
34+
wasm_hook="inj19ld6swyldyujcn72j7ugnu9twafhs9wxlyye5m",
35+
mints_paused=True,
36+
sends_paused=True,
37+
burns_paused=True,
38+
)
39+
40+
# broadcast the transaction
41+
result = await message_broadcaster.broadcast([message])
42+
print("---Transaction Response---")
43+
print(result)
44+
45+
46+
if __name__ == "__main__":
47+
asyncio.get_event_loop().run_until_complete(main())
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
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+
blocked_address = "inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r"
30+
denom = "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test"
31+
role1 = composer.permissions_role(
32+
role=composer.DEFAULT_PERMISSIONS_EVERYONE_ROLE,
33+
permissions=composer.RECEIVE_ACTION_PERMISSION,
34+
)
35+
role2 = composer.permissions_role(role="blacklisted", permissions=composer.UNDEFINED_ACTION_PERMISSION)
36+
address_role1 = composer.permissions_address_roles(address=blocked_address, roles=["blacklisted"])
37+
38+
message = composer.msg_update_namespace_roles(
39+
sender=address.to_acc_bech32(),
40+
namespace_denom=denom,
41+
role_permissions=[role1, role2],
42+
address_roles=[address_role1],
43+
)
44+
45+
# broadcast the transaction
46+
result = await message_broadcaster.broadcast([message])
47+
print("---Transaction Response---")
48+
print(result)
49+
50+
51+
if __name__ == "__main__":
52+
asyncio.get_event_loop().run_until_complete(main())
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
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+
blocked_address = "inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r"
30+
denom = "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test"
31+
address_role1 = composer.permissions_address_roles(address=blocked_address, roles=["blacklisted"])
32+
33+
message = composer.msg_revoke_namespace_roles(
34+
sender=address.to_acc_bech32(),
35+
namespace_denom=denom,
36+
address_roles_to_revoke=[address_role1],
37+
)
38+
39+
# broadcast the transaction
40+
result = await message_broadcaster.broadcast([message])
41+
print("---Transaction Response---")
42+
print(result)
43+
44+
45+
if __name__ == "__main__":
46+
asyncio.get_event_loop().run_until_complete(main())
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
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+
message = composer.msg_claim_voucher(
32+
sender=address.to_acc_bech32(),
33+
denom=denom,
34+
)
35+
36+
# broadcast the transaction
37+
result = await message_broadcaster.broadcast([message])
38+
print("---Transaction Response---")
39+
print(result)
40+
41+
42+
if __name__ == "__main__":
43+
asyncio.get_event_loop().run_until_complete(main())
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import asyncio
2+
3+
from pyinjective.async_client import AsyncClient
4+
from pyinjective.core.network import Network
5+
6+
7+
async def main() -> None:
8+
network = Network.testnet()
9+
client = AsyncClient(network)
10+
11+
namespaces = await client.fetch_all_permissions_namespaces()
12+
print(namespaces)
13+
14+
15+
if __name__ == "__main__":
16+
asyncio.get_event_loop().run_until_complete(main())
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import asyncio
2+
3+
from pyinjective.async_client import AsyncClient
4+
from pyinjective.core.network import Network
5+
6+
7+
async def main() -> None:
8+
network = Network.testnet()
9+
client = AsyncClient(network)
10+
11+
denom = "inj"
12+
namespace = await client.fetch_permissions_namespace_by_denom(denom=denom, include_roles=True)
13+
print(namespace)
14+
15+
16+
if __name__ == "__main__":
17+
asyncio.get_event_loop().run_until_complete(main())
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import asyncio
2+
3+
from pyinjective.async_client import AsyncClient
4+
from pyinjective.core.network import Network
5+
6+
7+
async def main() -> None:
8+
network = Network.testnet()
9+
client = AsyncClient(network)
10+
11+
denom = "inj"
12+
address = "inj1knhahceyp57j5x7xh69p7utegnnnfgxavmahjr"
13+
roles = await client.fetch_permissions_address_roles(denom=denom, address=address)
14+
print(roles)
15+
16+
17+
if __name__ == "__main__":
18+
asyncio.get_event_loop().run_until_complete(main())
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import asyncio
2+
3+
from pyinjective.async_client import AsyncClient
4+
from pyinjective.core.network import Network
5+
6+
7+
async def main() -> None:
8+
network = Network.testnet()
9+
client = AsyncClient(network)
10+
11+
denom = "inj"
12+
role = "roleName"
13+
addresses = await client.fetch_permissions_addresses_by_role(denom=denom, role=role)
14+
print(addresses)
15+
16+
17+
if __name__ == "__main__":
18+
asyncio.get_event_loop().run_until_complete(main())

0 commit comments

Comments
 (0)