-
Notifications
You must be signed in to change notification settings - Fork 192
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #500 from WhisperNode/docs_update_and_permissions_…
…types_fix Docs update and permissions types fix
- Loading branch information
Showing
6 changed files
with
402 additions
and
55 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,246 @@ | ||
# Permissions Module | ||
|
||
The Permissions Module facilitates the management of namespaces, roles, and permissions within the Injective ecosystem. This documentation outlines the key message types and their usage for interacting with permissions-related data. | ||
|
||
### Messages | ||
|
||
Let's explore (and provide examples) the Messages that the Permissions module exports and we can use to interact with the Injective chain. | ||
|
||
### `MsgClaimVoucher` | ||
|
||
This message is used to claim a voucher tied to a specific address within a namespace. | ||
|
||
```ts | ||
import { | ||
MsgClaimVoucher, | ||
MsgBroadcasterWithPk, | ||
} from "@injectivelabs/sdk-ts"; | ||
import { Network } from "@injectivelabs/networks"; | ||
|
||
const injectiveAddress = "inj1..."; | ||
const privateKey = "0x..."; | ||
const denom = "inj"; | ||
|
||
const msg = MsgClaimVoucher.fromJSON({ | ||
injectiveAddress, | ||
denom, | ||
}); | ||
|
||
const txHash = await new MsgBroadcasterWithPk({ | ||
privateKey, | ||
network: Network.Testnet | ||
}).broadcast({ | ||
msgs: msg | ||
}); | ||
|
||
console.log(txHash); | ||
|
||
``` | ||
|
||
### `MsgCreateNamespace` | ||
|
||
This message is used to creates a new namespace with permissions and roles. | ||
|
||
```ts | ||
import { | ||
MsgCreateNamespace, | ||
MsgBroadcasterWithPk, | ||
} from "@injectivelabs/sdk-ts"; | ||
import { Network } from "@injectivelabs/networks"; | ||
|
||
const injectiveAddress = "inj1..."; | ||
const secondAddress = "inj2....."; | ||
const privateKey = "0x..."; | ||
const denom = "inj"; | ||
const wasmHook = "inj3...."; | ||
const mintsPausedValue = false; | ||
const sendsPausedValue = false; | ||
const burnsPausedValue = false; | ||
const role1 = "Everyone"; | ||
const permissions1 = 1; | ||
|
||
const msg = MsgCreateNamespace.fromJSON({ | ||
injectiveAddress, | ||
namespace: { | ||
denom, | ||
wasmHook, | ||
mintsPausedValue, | ||
sendsPausedValue, | ||
burnsPausedValue, | ||
rolePermissions: { | ||
role: role1, | ||
permissions: permissions1, | ||
}, | ||
addressRoles: { | ||
address: injectiveAddress, | ||
roles: [role1], | ||
}, | ||
}, | ||
}) | ||
|
||
|
||
const txHash = await new MsgBroadcasterWithPk({ | ||
privateKey, | ||
network: Network.Testnet | ||
}).broadcast({ | ||
msgs: msg | ||
}); | ||
|
||
console.log(txHash); | ||
|
||
``` | ||
|
||
### `MsgDeleteNamespace` | ||
|
||
This message is used to delete an existing namespace. | ||
|
||
```ts | ||
import { | ||
MsgDeleteNamespace, | ||
MsgBroadcasterWithPk, | ||
} from "@injectivelabs/sdk-ts"; | ||
import { Network } from "@injectivelabs/networks"; | ||
|
||
const injectiveAddress = "inj1..."; | ||
const privateKey = "0x..."; | ||
const denom = "inj"; | ||
|
||
const msg = MsgDeleteNamespace.fromJSON({ | ||
injectiveAddress, | ||
denom | ||
}); | ||
|
||
const txHash = await new MsgBroadcasterWithPk({ | ||
privateKey, | ||
network: Network.Testnet | ||
}).broadcast({ | ||
msgs: msg | ||
}); | ||
|
||
console.log(txHash); | ||
|
||
``` | ||
|
||
### `MsgRevokeNamespaceRoles` | ||
|
||
This message is used to revoke roles from specified addresses in a namespace. | ||
|
||
```ts | ||
import { | ||
MsgRevokeNamespaceRoles, | ||
MsgBroadcasterWithPk, | ||
} from "@injectivelabs/sdk-ts"; | ||
import { Network } from "@injectivelabs/networks"; | ||
|
||
const injectiveAddress = "inj1..."; | ||
const privateKey = "0x..."; | ||
const denom = "inj"; | ||
const roles = ["role1","role2"]; | ||
|
||
const msg = MsgRevokeNamespaceRoles.fromJSON({ | ||
injectiveAddress, | ||
denom, | ||
addressRolesToRevoke: { | ||
injectiveAddress, | ||
roles: roles, | ||
}, | ||
}); | ||
|
||
const txHash = await new MsgBroadcasterWithPk({ | ||
privateKey, | ||
network: Network.Testnet | ||
}).broadcast({ | ||
msgs: msg | ||
}); | ||
|
||
console.log(txHash); | ||
|
||
``` | ||
|
||
### `MsgUpdateNamespace` | ||
|
||
This message is used to update namespace properties like mints, sends, and burns. | ||
|
||
```ts | ||
import { | ||
MsgUpdateNamespace, | ||
MsgBroadcasterWithPk, | ||
} from "@injectivelabs/sdk-ts"; | ||
import { Network } from "@injectivelabs/networks"; | ||
|
||
const injectiveAddress = "inj1..." | ||
const privateKey = "0x..."; | ||
const denom = "inj"; | ||
const wasmHookValue = "inj2..."; | ||
const mintsPausedValue = false; | ||
const sendsPausedValue = false; | ||
const burnsPausedValue = true; | ||
|
||
const msg = await new MsgUpdateNamespace.fromJSON({ | ||
injectiveAddress, | ||
denom, | ||
wasmHook: { | ||
newValue: wasmHookValue | ||
}, | ||
mintsPaused: { | ||
newValue: mintsPausedValue; | ||
}, | ||
sendsPaused: { | ||
newValue: sendsPausedValue; | ||
}, | ||
burnsPaused: { | ||
newValue: burnsPausedValue; | ||
}, | ||
}); | ||
|
||
const txHash = await new MsgBroadcasterWithPk({ | ||
privateKey, | ||
network: Network.Testnet | ||
}).broadcast({ | ||
msgs: msg | ||
}); | ||
|
||
console.log(txHash); | ||
|
||
``` | ||
|
||
### `MsgUpdateNamespaceRoles` | ||
|
||
This message is used to modify the roles and permissions for addresses in a namespace. | ||
|
||
```ts | ||
import { | ||
MsgUpdateNamespaceRoles, | ||
MsgBroadcasterWithPk, | ||
} from "@injectivelabs/sdk-ts"; | ||
import { Network } from "@injectivelabs/networks"; | ||
|
||
const injectiveAddress = "inj1..."; | ||
const privateKey = "0x..."; | ||
const denom = "inj"; | ||
const role = "role1"; | ||
const permissions = 4; | ||
|
||
const msg = MsgUpdateNamespaceRoles.fromJSON({ | ||
injectiveAddress, | ||
denom, | ||
rolePermissions: { | ||
role, | ||
permissions: permissions | ||
}, | ||
addressRoles: { | ||
injectiveAddress, | ||
roles: [role], | ||
}, | ||
}); | ||
|
||
const txHash = await new MsgBroadcasterWithPk({ | ||
privateKey, | ||
network: Network.Testnet | ||
}).broadcast({ | ||
msgs: msg | ||
}); | ||
|
||
console.log(txHash); | ||
|
||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
98 changes: 98 additions & 0 deletions
98
.gitbook/querying/querying-chain/querying-chain-permissions.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
# Permissions | ||
|
||
Example code snippets to query data related to the permissions module on chain. | ||
|
||
### Using gRPC | ||
|
||
#### Fetch all namespaces | ||
|
||
```ts | ||
import { ChainGrpcPermissionsApi } from '@injectivelabs/sdk-ts' | ||
import { getNetworkEndpoints, Network } from '@injectivelabs/networks' | ||
|
||
const endpoints = getNetworkEndpoints(Network.Testnet) | ||
const chainGrpcPermissionsApi = new ChainGrpcPermissionsApi(endpoints.grpc) | ||
|
||
const allNamespaces = await chainGrpcPermissionsApi.fetchAllNamespaces() | ||
|
||
console.log(allNamespaces) | ||
``` | ||
|
||
#### Fetch a namespace based on the denom | ||
|
||
```ts | ||
import { ChainGrpcPermissionsApi } from '@injectivelabs/sdk-ts' | ||
import { getNetworkEndpoints, Network } from '@injectivelabs/networks' | ||
|
||
const endpoints = getNetworkEndpoints(Network.Testnet) | ||
const chainGrpcPermissionsApi = new ChainGrpcPermissionsApi(endpoints.grpc) | ||
|
||
const subdenom = 'NINJA' | ||
const includeRoles = true | ||
|
||
const namespace = await chainGrpcPermissionsApi.fetchNamespaceByDenom({ | ||
subdenom, | ||
includeRoles: includeRoles, | ||
}) | ||
|
||
console.log(namespace) | ||
``` | ||
|
||
#### Fetch all roles that are associated to an address based on the denom | ||
|
||
```ts | ||
import { ChainGrpcPermissionsApi } from '@injectivelabs/sdk-ts' | ||
import { getNetworkEndpoints, Network } from '@injectivelabs/networks' | ||
|
||
const endpoints = getNetworkEndpoints(Network.Testnet) | ||
const chainGrpcPermissionsApi = new ChainGrpcPermissionsApi(endpoints.grpc) | ||
|
||
const injectiveAddress = 'inj...' | ||
const subdenom = 'NINJA' | ||
|
||
const addressRoles = await chainGrpcPermissionsApi.fetchAddressRoles({ | ||
injectiveAddress, | ||
denom: subdenom, | ||
}) | ||
|
||
console.log(addressRoles) | ||
``` | ||
|
||
#### Fetch all addresses that are associated to a given role for a denom | ||
|
||
```ts | ||
import { ChainGrpcPermissionsApi } from '@injectivelabs/sdk-ts' | ||
import { getNetworkEndpoints, Network } from '@injectivelabs/networks' | ||
|
||
const endpoints = getNetworkEndpoints(Network.Testnet) | ||
const chainGrpcPermissionsApi = new ChainGrpcPermissionsApi(endpoints.grpc) | ||
|
||
const subdenom = 'NINJA' | ||
const role = 'role' | ||
|
||
|
||
const addressesByRole = await chainGrpcPermissionsApi.fetchAddressesByRole({ | ||
subdenom, | ||
role: role, | ||
}) | ||
|
||
console.log(addressesByRole) | ||
``` | ||
|
||
#### Fetch vouchers for a given injective address | ||
|
||
```ts | ||
import { ChainGrpcPermissionsApi } from '@injectivelabs/sdk-ts' | ||
import { getNetworkEndpoints, Network } from '@injectivelabs/networks' | ||
|
||
const endpoints = getNetworkEndpoints(Network.Testnet) | ||
const chainGrpcPermissionsApi = new ChainGrpcPermissionsApi(endpoints.grpc) | ||
|
||
const injectiveAddress = 'inj...' | ||
|
||
const vouchers = await chainGrpcPermissionsApi.fetchVouchersForAddress( | ||
injectiveAddress, | ||
) | ||
|
||
console.log(vouchers) | ||
``` |
Oops, something went wrong.