From 83feeecef242f20ff776ac2c35d617751ddd9a25 Mon Sep 17 00:00:00 2001 From: astinz <28899947+astinz@users.noreply.github.com> Date: Sat, 16 Nov 2024 07:19:18 +0300 Subject: [PATCH] initial commit... --- .github/workflows/build-docs.yml | 80 +++++++++++++ .gitignore | 1 + README.md | 2 + docs/c.list | 6 + docs/cfg/buildprofiles.xml | 31 +++++ docs/cfg/glossary.xml | 16 +++ docs/cfg/google_analytics_noscript.html | 4 + docs/cfg/gtm.js | 9 ++ docs/code-snippets/account.kt | 4 + docs/code-snippets/install.kt | 1 + docs/code-snippets/sui.kt | 1 + docs/code-snippets/zkLogin-android.kt | 27 +++++ docs/images/ptb-studio.png | Bin 0 -> 91966 bytes docs/images/sui-cookbook.svg | 15 +++ docs/in.tree | 33 ++++++ docs/labels.list | 18 +++ docs/redirection-rules.xml | 12 ++ docs/topics/Reference.md | 11 ++ docs/topics/Transactions.md | 12 ++ docs/topics/accounts.md | 92 ++++++++++++++ docs/topics/bcs.topic | 67 +++++++++++ docs/topics/deepbook.md | 3 + docs/topics/ext-technology.md | 5 + docs/topics/getting-started.topic | 112 ++++++++++++++++++ docs/topics/misc.md | 3 + .../topics/programmable-transaction-blocks.md | 72 +++++++++++ docs/topics/ptb-studio.md | 10 ++ docs/topics/welcome.topic | 38 ++++++ docs/topics/zklogin.topic | 19 +++ docs/v.list | 4 + docs/writerside.cfg | 12 ++ 31 files changed, 720 insertions(+) create mode 100644 .github/workflows/build-docs.yml create mode 100644 .gitignore create mode 100644 README.md create mode 100644 docs/c.list create mode 100644 docs/cfg/buildprofiles.xml create mode 100644 docs/cfg/glossary.xml create mode 100644 docs/cfg/google_analytics_noscript.html create mode 100644 docs/cfg/gtm.js create mode 100644 docs/code-snippets/account.kt create mode 100644 docs/code-snippets/install.kt create mode 100644 docs/code-snippets/sui.kt create mode 100644 docs/code-snippets/zkLogin-android.kt create mode 100644 docs/images/ptb-studio.png create mode 100644 docs/images/sui-cookbook.svg create mode 100644 docs/in.tree create mode 100644 docs/labels.list create mode 100644 docs/redirection-rules.xml create mode 100644 docs/topics/Reference.md create mode 100644 docs/topics/Transactions.md create mode 100644 docs/topics/accounts.md create mode 100644 docs/topics/bcs.topic create mode 100644 docs/topics/deepbook.md create mode 100644 docs/topics/ext-technology.md create mode 100644 docs/topics/getting-started.topic create mode 100644 docs/topics/misc.md create mode 100644 docs/topics/programmable-transaction-blocks.md create mode 100644 docs/topics/ptb-studio.md create mode 100644 docs/topics/welcome.topic create mode 100644 docs/topics/zklogin.topic create mode 100644 docs/v.list create mode 100644 docs/writerside.cfg diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml new file mode 100644 index 0000000..4319eb4 --- /dev/null +++ b/.github/workflows/build-docs.yml @@ -0,0 +1,80 @@ +name: Build documentation + +on: + push: + branches: ["main"] + workflow_dispatch: + +permissions: + id-token: write + pages: write + +env: + INSTANCE: 'docs/in' + ARTIFACT: 'webHelpIN2-all.zip' + DOCKER_VERSION: '243.21565' + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Build docs using Writerside Docker builder + uses: JetBrains/writerside-github-action@v4 + with: + instance: ${{ env.INSTANCE }} + artifact: ${{ env.ARTIFACT }} + docker-version: ${{ env.DOCKER_VERSION }} + + - name: Save artifact with build results + uses: actions/upload-artifact@v4 + with: + name: docs + path: | + artifacts/${{ env.ARTIFACT }} + artifacts/report.json + retention-days: 7 + test: + needs: build + runs-on: ubuntu-latest + steps: + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + name: docs + path: artifacts + + - name: Test documentation + uses: JetBrains/writerside-checker-action@v1 + with: + instance: ${{ env.INSTANCE }} + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + needs: [build, test] + runs-on: ubuntu-latest + steps: + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + name: docs + + - name: Unzip artifact + run: unzip -O UTF-8 -qq '${{ env.ARTIFACT }}' -d dir + + - name: Setup Pages + uses: actions/configure-pages@v4 + + - name: Package and upload Pages artifact + uses: actions/upload-pages-artifact@v3 + with: + path: dir + + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..723ef36 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.idea \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..409cb4c --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# Sui Cookbook + diff --git a/docs/c.list b/docs/c.list new file mode 100644 index 0000000..c4c77a2 --- /dev/null +++ b/docs/c.list @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/docs/cfg/buildprofiles.xml b/docs/cfg/buildprofiles.xml new file mode 100644 index 0000000..25e65be --- /dev/null +++ b/docs/cfg/buildprofiles.xml @@ -0,0 +1,31 @@ + + + + + #7F52FF + contrast + sui-cookbook.svg + sui-cookbook.svg + false + true + https://github.com/mcxross/sui-cookbook + gtm.js + google_analytics_noscript.html + Launch PTB Studio + https://ptb.studio + true + + + + false + + + + diff --git a/docs/cfg/glossary.xml b/docs/cfg/glossary.xml new file mode 100644 index 0000000..50221cf --- /dev/null +++ b/docs/cfg/glossary.xml @@ -0,0 +1,16 @@ + + + + The network that processes production transaction blocks. When you trade SUI or NFTs that are + ultimately based on fiat currency, you are doing so on the Mainnet network of Sui + + Staging network to provide quality assurance that any planned changes to Sui do not adversely + impact performance. Developers can use this network to test their code before placing it in production + + A more unstable network that is used to develop new features. Developers can leverage this + network to code against the latest planned features of Sui + + You can run a Sui network on your local computer. Developing on a local network provides an + optimized workflow in an environment you control + + \ No newline at end of file diff --git a/docs/cfg/google_analytics_noscript.html b/docs/cfg/google_analytics_noscript.html new file mode 100644 index 0000000..a29b66f --- /dev/null +++ b/docs/cfg/google_analytics_noscript.html @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/docs/cfg/gtm.js b/docs/cfg/gtm.js new file mode 100644 index 0000000..0662557 --- /dev/null +++ b/docs/cfg/gtm.js @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/docs/code-snippets/account.kt b/docs/code-snippets/account.kt new file mode 100644 index 0000000..424bc96 --- /dev/null +++ b/docs/code-snippets/account.kt @@ -0,0 +1,4 @@ +val account = Account.create() + +val account = Account.import("suipri...8cpv0g") +val account = Account.import("abandon salad ...") \ No newline at end of file diff --git a/docs/code-snippets/install.kt b/docs/code-snippets/install.kt new file mode 100644 index 0000000..04f4e03 --- /dev/null +++ b/docs/code-snippets/install.kt @@ -0,0 +1 @@ +implementation("xyz.mcxross.ksui:ksui:<$ksui_version>") \ No newline at end of file diff --git a/docs/code-snippets/sui.kt b/docs/code-snippets/sui.kt new file mode 100644 index 0000000..0bd4603 --- /dev/null +++ b/docs/code-snippets/sui.kt @@ -0,0 +1 @@ +val sui = Sui() \ No newline at end of file diff --git a/docs/code-snippets/zkLogin-android.kt b/docs/code-snippets/zkLogin-android.kt new file mode 100644 index 0000000..3f3c254 --- /dev/null +++ b/docs/code-snippets/zkLogin-android.kt @@ -0,0 +1,27 @@ +private val zkLoginSuccess = mutableStateOf(false) +private var activityResult: ActivityResult? = null +private var zkLoginResponse: ZKLoginResponse? = null + +private val zkLoginResultLauncher = + registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result -> + if (result.resultCode == Activity.RESULT_OK) { + activityResult = result + zkLoginResponse = + result.data?.getStringExtra("zkLoginResponse")?.let { jsonToZKLoginResponse(it) } + zkLoginSuccess.value = true + } else { + Toast.makeText(this, "Login failed", Toast.LENGTH_SHORT).show() + } +} + + + val googleZKIntent = + context zkLogin + ZKLoginRequest( + OpenIDServiceConfiguration( + Google(), + System.getenv("GOOGLE_CLIENT_ID")!!, // Replace with your Google Client ID + System.getenv("GOOGLE_REDIRECT_URI")!!, // Replace with your Google Redirect URI, + ) + ) +launcher.launch(googleZKIntent) \ No newline at end of file diff --git a/docs/images/ptb-studio.png b/docs/images/ptb-studio.png new file mode 100644 index 0000000000000000000000000000000000000000..71113c4039da9cf37e88ae4396c5862ecc4d5906 GIT binary patch literal 91966 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Μ@$2BU{| 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%0Dfh9sIrMAqLX`NiH1c#b(&?BP4RmDs?{IaQ>IYMn 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 + + + + + + + + + + + + + + diff --git a/docs/in.tree b/docs/in.tree new file mode 100644 index 0000000..befc33a --- /dev/null +++ b/docs/in.tree @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/labels.list b/docs/labels.list new file mode 100644 index 0000000..4c8b6e3 --- /dev/null +++ b/docs/labels.list @@ -0,0 +1,18 @@ + + + + + This is an example label + + + + Go to McXross + + + Work in progress + Beta + + This is an experimental feature + New in version 2023.3 + \ No newline at end of file diff --git a/docs/redirection-rules.xml b/docs/redirection-rules.xml new file mode 100644 index 0000000..e0b5f71 --- /dev/null +++ b/docs/redirection-rules.xml @@ -0,0 +1,12 @@ + + + + + Created after removal of "Development" from SuiCookbook + Help IDs that are no longer available in build after removal: + + Development + + development.html + + \ No newline at end of file diff --git a/docs/topics/Reference.md b/docs/topics/Reference.md new file mode 100644 index 0000000..efd006e --- /dev/null +++ b/docs/topics/Reference.md @@ -0,0 +1,11 @@ +# Reference + +API References for the various SDKs used across the topics. + +[Kotlin Sui SDK API](https://mcxross.github.io/ksui) + +[Kotlin DeepBook SDK API](https://mcxross.github.io/ksui) + +[Kotlin zkLogin SDK](https://zeroauth.dev/) + +[Kotlin BCS SDK API](https://github.com/mcxross/kotlinx-serialization-bcs) diff --git a/docs/topics/Transactions.md b/docs/topics/Transactions.md new file mode 100644 index 0000000..acf41cc --- /dev/null +++ b/docs/topics/Transactions.md @@ -0,0 +1,12 @@ +# Transactions + +Transactions allow us to alter the state of a Blockchain. In Sui, +these transactions are made up of a chain of commands termed +Programmable Transaction Blocks. + +The execution of these commands is an all-or-nothing operation, in that, either all +commands execute successfully or the entire transaction fails. Construction of +these PTBs is either by SDKs or Transaction Builders. + +In this chapter, we'll cover how to construct PTBs with both an SDK and a Transaction +Builder. \ No newline at end of file diff --git a/docs/topics/accounts.md b/docs/topics/accounts.md new file mode 100644 index 0000000..39f651b --- /dev/null +++ b/docs/topics/accounts.md @@ -0,0 +1,92 @@ +# Accounts + +## Creating new Accounts + +To create a new Sui Account, simply invoke the static `create` method on the `Account` class. + +```kotlin +``` + +{ src="account.kt" include-lines="1" } + +## Importing an existing Account + +In case you already have existing account credentials like a Bech32 encoded private key or +passphrase that you'd like to import and use. + +For a private key: + +```kotlin +``` + +{ src="account.kt" include-lines="3" } + +For a passphrase: + +```kotlin +``` + +{ src="account.kt" include-lines="4" } + +## Get Account Balance + +Once you've an `account`, you can either retrieve the balance for a specific coin type or for +all coin types. + +For a specific coin type: + +```kotlin +val suiBalance = [[[sui|getting-started.topic#sui-client]]].getBalance(account.address) +``` + +This defaults to the `0x2::sui::SUI` coin type, or you can pass a particular coin type argument to the `type` parameter +as shown below: + +```kotlin +val particularTypeBalance = [[[sui|getting-started.topic#sui-client]]].getBalance(account.address, PARTICULAR_TYPE) +``` + +You can also simply retrieve all coin type balances as follows: + +```kotlin +val allBalances = [[[sui|getting-started.topic#sui-client]]].getAllBalances(account.address) +``` + +## Get Account Objects + +You can also retrieve objects owned by a given account address: + +```kotlin +val ownedObjects = [[[sui|getting-started.topic#sui-client]]].getOwnedObjects(account.address) +``` + +## Get Account Coins + +Account Coins retrieval also follows the same pattern + +```kotlin +val coins = [[[sui|getting-started.topic#sui-client]]].getCoins(account.address) +``` + +## Get Account Stakes + +You can fetch stakes for an account as follows: + +```kotlin +val stakes = [[[sui|getting-started.topic#sui-client]]].getStakes(account.address) +``` + +## Resolve Account Name Service Names + +```Kotlin +val names = [[[sui|getting-started.topic#sui-client]]].resolveNameServiceNames(account.address) +``` + +## Request Test Tokens + +If your `Sui()` client is configured for testnet, you can request test tokens from a faucet +as follows: + +```kotlin +val response = [[[sui|getting-started.topic#sui-client]]].requestTestTokens(account.address) +``` \ No newline at end of file diff --git a/docs/topics/bcs.topic b/docs/topics/bcs.topic new file mode 100644 index 0000000..15953d4 --- /dev/null +++ b/docs/topics/bcs.topic @@ -0,0 +1,67 @@ + + + + + +

+ Binary Canonical Serialization is an efficient binary format for structured data, + ensuring consistent serialization across platforms. This format is used extensively by Sui, so it is worth + touching. +

+ + +

It is available for various platforms, and we can install it by adding a dependency for a platform + as follows: +

+ + + + implementation("xyz.mcxross.bcs:<bcs-[platform]>:<$bcs_version>") + + + + + implementation("xyz.mcxross.bcs:bcs:<$bcs_version>") + + + + + implementation("xyz.mcxross.bcs:bcs-android:<$bcs_version>") + + + + + implementation("xyz.mcxross.bcs:bcs-jvm:<$bcs_version>") + + + +
+ + + +

In order to serializer a user defined type, first make a class serializable by annotating it with @Serializable +

+ +@Serializable +data class Data( + val long: Long, + val double: Double, + val string: String, + val boolean: Boolean +) + +

You can now serialize an instance of this class by calling Bcs.encodeToByteArray()

+ +val bcs = Bcs.encodeToByteArray(Data(1_000_000, 3.14159265359, "çå∞≠¢õß∂ƒ∫", false)) +
+ + +

To deserialize an object from BCS, use the decodeFromByteArray() static methode:

+ + val obj = Bcs.decodeFromByteArray<Data>(bcs) + +
+
\ No newline at end of file diff --git a/docs/topics/deepbook.md b/docs/topics/deepbook.md new file mode 100644 index 0000000..27a5b8b --- /dev/null +++ b/docs/topics/deepbook.md @@ -0,0 +1,3 @@ +# DeepBook + +TBA \ No newline at end of file diff --git a/docs/topics/ext-technology.md b/docs/topics/ext-technology.md new file mode 100644 index 0000000..e027f96 --- /dev/null +++ b/docs/topics/ext-technology.md @@ -0,0 +1,5 @@ +# Extended Technology + +This topic covers every other Sui technology that is not part of the core technologies. +It is important to mention that the term "core" is used loosely. + diff --git a/docs/topics/getting-started.topic b/docs/topics/getting-started.topic new file mode 100644 index 0000000..825659d --- /dev/null +++ b/docs/topics/getting-started.topic @@ -0,0 +1,112 @@ + + + + +

+ In this chapter, we'll see how to install Sui binaries and how to add Sui client libraries + as dependencies. Let's start with installing Sui binaries. +

+ +

+ Installing Sui for development is very easy with package managers. In your OS' terminal or shell, run the + appropriate command as shown below: +

+ + + + brew install sui + + + + + brew install sui + + + + + choco install sui + + + +
+ +

+ In order to interact with Sui, we need a client. If you've run either of the above + commands, you have a binary client installed that you can confirm by running sui --version + in you terminal or shell. If successful, this should display the version of Sui installed. +

+ +

+ To add a library client to your project, follow the instructions below: +

+ + +

+ The client libraries are available for various platforms. Ranging from specific platform + libraries to multiplatform libraries. Follow the instructions below: +

+ + + + implementation("xyz.mcxross.ksui:<ksui-[platform]>:<$ksui_version>") + + + +

+ If you have a Kotlin Multiplaform project, add the following dependency to your projects' common sourceSet: +

+
+ + implementation("xyz.mcxross.ksui:ksui:<$ksui_version>") + +
+ +

+ For a purely Android project, add the following as a dependency: +

+
+ + implementation("xyz.mcxross.ksui:ksui-android:<$ksui_version>") + +
+ +

+ For a JVM projects, add the following as a dependency: +

+ + implementation("xyz.mcxross.ksui:ksui-jvm:<$ksui_version>") + +
+
+
+ + +

Create a Sui instance. This is the entry point for the client

+ + val sui = Sui() + + The default connection network is devnet. To change this: + + val config = SuiConfig(settings = SuiSettings(network = Network.MAINNET)) + val sui = Sui(config) + + + The Sui Client is heavily configurable. You can set things like connectAttempts, + retryOnServerErrors, proxy, and much more. + + Simply pass a ClientConfig object to the settings: + + + val settings = SuiSettings(clientConfig = ClientConfig(maxRetries = 5)) + val sui = Sui(SuiConfig(settings)) + + +

+ Our client is now ready for use. We can now call the various available methods on this sui object. +

+
+ +
\ No newline at end of file diff --git a/docs/topics/misc.md b/docs/topics/misc.md new file mode 100644 index 0000000..4500831 --- /dev/null +++ b/docs/topics/misc.md @@ -0,0 +1,3 @@ +# Misc + +Everything else pertaining to Sui that's good to know \ No newline at end of file diff --git a/docs/topics/programmable-transaction-blocks.md b/docs/topics/programmable-transaction-blocks.md new file mode 100644 index 0000000..e8346d0 --- /dev/null +++ b/docs/topics/programmable-transaction-blocks.md @@ -0,0 +1,72 @@ +# Programmable Transaction Blocks + +The Kotlin SDK does a great job by abstracting PTB construction using a simple +expressive Domain Specific Language as we'll explore below. + +The `programmableTx {}` DSL block is the top most block that creates a typed scope for PTB construction. Within it, we can +call all available commands, pass their results to the next command and so forth. + +For example, the Sui `moveCall` command expects a mandatory `target` argument, optional`arguments`, and +`typedArguments` argument. The natural mapping for these is the `moveCall` within `programmableTx` DSL, +where each property (target, arguments, and typedArgument) is used directly with matching names. + +Let's see how to call `hello_world` **Move** **function** in the `hello_wolrd` **module** of +`0x883393ee444fb828aa0e977670cf233b0078b41d144e6208719557cb3888244d` **package**. The function +has the following signature: + +```Rust +[[[public entry fun hello_world(arg0: u64)|https://testnet.suivision.xyz/package/0x883393ee444fb828aa0e977670cf233b0078b41d144e6208719557cb3888244d?tab=Code]]] +``` + +Things to note, the function expects a `u64` as an argument. Has no type parameters. The module name and package. Click on it for details. + +Given the above properties, we can call it as follows: + +```Kotlin +val ptb = programmableTx { + command { + moveCall { + target = "0x883393ee444fb828aa0e977670cf233b0078b41d144e6208719557cb3888244d::hello_wolrd::hello_world" + typeArguments = emptyList() + arguments = inputs(0UL) + } + } +} +``` + +You can also pass results from one command to the next by storing them in a variable, as shown below: + +```Kotlin +val ptb = programmableTx { + command { + val splitCoins = splitCoins { + coin = Argument.GasCoin + into = inputs(1_000_000UL) + } + + transferObjects { + objects = inputs(splitCoins) + to = input(alice.address) + } + } +} +``` + +## Transaction Block Dry Run + +Simulate a transaction before execution: + +```Kotlin +val result = [[[sui|getting-started.topic#sui-client]]].dryRunTransactionBlock(ptb) +``` + +## Sign And Execute Transaction Block + +Once you've constructed, you can sign and execute it: + +```Kotlin +val result = [[[sui|getting-started.topic#sui-client]]].signAndExecuteTransactionBlock(alice, ptb) +``` + +In the next section of Transactions, we're going to see how to visually compose PTBs using +**[PTB Studio](https://ptb.studio)**. \ No newline at end of file diff --git a/docs/topics/ptb-studio.md b/docs/topics/ptb-studio.md new file mode 100644 index 0000000..22ccd65 --- /dev/null +++ b/docs/topics/ptb-studio.md @@ -0,0 +1,10 @@ +# PTB Studio + +[PTB Studio](https://ptb.studio) is your one-stop shop for everything Sui Transactions. +With it, you can construct, visualize and execute transactions. + +Watch the video below to learn more: + +
+ + + + + + + + Extended Technologies + + DeepBook + + + zkLogin + + + + + + \ No newline at end of file diff --git a/docs/topics/zklogin.topic b/docs/topics/zklogin.topic new file mode 100644 index 0000000..219a612 --- /dev/null +++ b/docs/topics/zklogin.topic @@ -0,0 +1,19 @@ + + + + + + + + implementation("xyz.mcxross.bcs:bcs-android:<$bcs_version>") + +

After installation, you can then use it as follows:

+ +

You can the trigger the login process as follows:

+ +
+
+
\ No newline at end of file diff --git a/docs/v.list b/docs/v.list new file mode 100644 index 0000000..e68757d --- /dev/null +++ b/docs/v.list @@ -0,0 +1,4 @@ + + + + diff --git a/docs/writerside.cfg b/docs/writerside.cfg new file mode 100644 index 0000000..b2168fb --- /dev/null +++ b/docs/writerside.cfg @@ -0,0 +1,12 @@ + + + + + + + + + + + \ No newline at end of file