-
Notifications
You must be signed in to change notification settings - Fork 16
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Add mvr names management * Updates --------- Co-authored-by: Ronny Roland <[email protected]>
- Loading branch information
1 parent
4341d32
commit e8c01ad
Showing
2 changed files
with
93 additions
and
5 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,11 +1,88 @@ | ||
import Beta from '../../components/beta' | ||
import { Callout } from 'nextra/components'; | ||
|
||
<Beta/> | ||
|
||
# Managing MVR names | ||
# Managing MVR names (Mainnet only) | ||
|
||
[TODO!!!: Add sui client ptb commands to: | ||
<Callout type="warning"> | ||
These examples assume that you use the MVR plugin for the Sui Typescript SDK, as described in the [`Typescript SDK`](/move-registry/tooling/typescript-sdk) section. | ||
</Callout> | ||
|
||
1. Create a new MVR app by presenting a SuiNS name and a package name. | ||
2. Linking a MVR app with a `PackageInfo` object. | ||
] | ||
## Creating a new application | ||
|
||
To create a new application, you must provide a SuiNS name and a package name, as long as it is not | ||
already registered. | ||
|
||
```typescript | ||
const transaction = new Transaction(); | ||
|
||
const appCap = transaction.moveCall({ | ||
target: `@mvr/core::move_registry::register`, | ||
arguments: [ | ||
// the registry obj: Can also be resolved as `registry-obj@mvr` from mainnet SuiNS. | ||
transaction.object('0x0e5d473a055b6b7d014af557a13ad9075157fdc19b6d51562a18511afd397727'), | ||
transaction.object(suinsObjectId), | ||
transaction.pure.string(name), | ||
transaction.object.clock(), | ||
], | ||
}); | ||
|
||
// we can then use the appCap to attach packages directly, or transfer (e.g. to a safe address) | ||
// and register packages later. | ||
``` | ||
|
||
## Attaching a Mainnet package to an application | ||
|
||
When attaching a Mainnet package to an application, you must provide the `PackageInfo` object. | ||
This call is permanent, so after a `PackageInfo` object is attached to an application, it cannot be | ||
detached in the future. Consequently, an app is always linked to a specific package. | ||
|
||
```typescript | ||
// we can then use the appCap to attach packages directly, or transfer (e.g. to a safe address) | ||
// and register packages later. | ||
|
||
const transaction = new Transaction(); | ||
|
||
transaction.moveCall({ | ||
target: `@mvr/core::move_registry::assign_package`, | ||
arguments: [ | ||
// the registry obj: Can also be resolved as `registry-obj@mvr` from mainnet SuiNS. | ||
transaction.object(`0x0e5d473a055b6b7d014af557a13ad9075157fdc19b6d51562a18511afd397727`), | ||
transaction.object('<The AppCap object>'), | ||
transaction.object('<The PackageInfo object on mainnet>'), | ||
], | ||
}); | ||
``` | ||
|
||
## Attaching a non-Mainnet package to an application | ||
|
||
For non-Mainnet networks, you only attach a "pointer" to the package, instead of strict binding (which wouldn't be possible). | ||
|
||
<Callout> | ||
You can always update an external network by first calling `@mvr/core::move_registry::unset_network`, and then calling `@mvr/core::move_registry::set_network` again. | ||
</Callout> | ||
|
||
```typescript | ||
const transaction = new Transaction(); | ||
|
||
const appInfo = transaction.moveCall({ | ||
target: `@mvr/core::app_info::new`, | ||
arguments: [ | ||
transaction.pure.option("address", '<The objectId of the `PackageInfo` object on the external network>'), | ||
transaction.pure.option("address", '<The address of the package on the external network>'), | ||
transaction.pure.option("address", null), | ||
], | ||
}); | ||
|
||
transaction.moveCall({ | ||
target: `@mvr/core::move_registry::set_network`, | ||
arguments: [ | ||
// the registry obj: Can also be resolved as `registry-obj@mvr` from mainnet SuiNS. | ||
transaction.object('0x0e5d473a055b6b7d014af557a13ad9075157fdc19b6d51562a18511afd397727'), | ||
transaction.object('<The AppCap object>'), | ||
transaction.pure.string("<chain id of the network: use `4c78adac` for testnet>"), | ||
appInfo, | ||
], | ||
}); | ||
``` |