Skip to content

feat: sui #884

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 9 commits into
base: main
Choose a base branch
from
Open

feat: sui #884

wants to merge 9 commits into from

Conversation

ganchoradkov
Copy link
Member

@ganchoradkov ganchoradkov commented May 19, 2025

implemented SUI in react-app & react-wallet.
Supported methods are

  • sui_signTransaction - done
  • sui_signAndExecuteTransaction - done
  • sui_signPersonalMessage - done

Payloads & Results

sui_signTransaction

take a sui transaction like

{
  "version": 2,
  "sender": "0xd5f647edb77d4fda31d0304506447fb3c92e55aaf77bc5ed4b77c332dd4605fa",
  "expiration": null,
  "gasData": {
    "budget": null,
    "price": null,
    "owner": null,
    "payment": null
  },
  "inputs": [
    {
      "Pure": {
        "bytes": "ZAAAAAAAAAA="
      }
    },
    {
      "Pure": {
        "bytes": "1fZH7bd9T9ox0DBFBkR/s8kuVar3e8XtS3fDMt1GBfo="
      }
    }
  ],
  "commands": [
    {
      "SplitCoins": {
        "coin": {
          "GasCoin": true
        },
        "amounts": [
          {
            "Input": 0
          }
        ]
      }
    },
    {
      "TransferObjects": {
        "objects": [
          {
            "NestedResult": [
              0,
              0
            ]
          }
        ],
        "address": {
          "Input": 1
        }
      }
    }
  ]
}

encode it in base64 and send it to the wallet

{
    "transaction": "ewogICJ2ZXJzaW9uIjogMiwKICAic2VuZGVyIjogIjB4ZDVmNjQ3ZWRiNzdkNGZkYTMxZDAzMDQ1MDY0NDdmYjNjOTJlNTVhYWY3N2JjNWVkNGI3N2MzMzJkZDQ2MDVmYSIsCiAgImV4cGlyYXRpb24iOiBudWxsLAogICJnYXNEYXRhIjogewogICAgImJ1ZGdldCI6IG51bGwsCiAgICAicHJpY2UiOiBudWxsLAogICAgIm93bmVyIjogbnVsbCwKICAgICJwYXltZW50IjogbnVsbAogIH0sCiAgImlucHV0cyI6IFsKICAgIHsKICAgICAgIlB1cmUiOiB7CiAgICAgICAgImJ5dGVzIjogIlpBQUFBQUFBQUFBPSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIlB1cmUiOiB7CiAgICAgICAgImJ5dGVzIjogIjFmWkg3YmQ5VDlveDBEQkZCa1IvczhrdVZhcjNlOFh0UzNmRE10MUdCZm89IgogICAgICB9CiAgICB9CiAgXSwKICAiY29tbWFuZHMiOiBbCiAgICB7CiAgICAgICJTcGxpdENvaW5zIjogewogICAgICAgICJjb2luIjogewogICAgICAgICAgIkdhc0NvaW4iOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiYW1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgIklucHV0IjogMAogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIlRyYW5zZmVyT2JqZWN0cyI6IHsKICAgICAgICAib2JqZWN0cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgIk5lc3RlZFJlc3VsdCI6IFsKICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgIDAKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFkZHJlc3MiOiB7CiAgICAgICAgICAiSW5wdXQiOiAxCiAgICAgICAgfQogICAgICB9CiAgICB9CiAgXQp9",
    "address": "0xd5f647edb77d4fda31d0304506447fb3c92e55aaf77bc5ed4b77c332dd4605fa"
}

the wallet will respond with the signature like

{
    "signature": "ACRvdr3yI2mdpeOK+NsJIimdNGcE9R//jjT3HALZ17fFyu818op4jZi/64lPBjpKMDX6ZtxnCFZExTOFdpi3MwEZXLv/ORduxMYX0fw8dbHlnWC8WG0ymrlAmARpEibbhw=="
}

sui_signAndExecuteTransaction

take a sui transaction like

{
  "version": 2,
  "sender": "0xd5f647edb77d4fda31d0304506447fb3c92e55aaf77bc5ed4b77c332dd4605fa",
  "expiration": null,
  "gasData": {
    "budget": null,
    "price": null,
    "owner": null,
    "payment": null
  },
  "inputs": [
    {
      "Pure": {
        "bytes": "ZAAAAAAAAAA="
      }
    },
    {
      "Pure": {
        "bytes": "1fZH7bd9T9ox0DBFBkR/s8kuVar3e8XtS3fDMt1GBfo="
      }
    }
  ],
  "commands": [
    {
      "SplitCoins": {
        "coin": {
          "GasCoin": true
        },
        "amounts": [
          {
            "Input": 0
          }
        ]
      }
    },
    {
      "TransferObjects": {
        "objects": [
          {
            "NestedResult": [
              0,
              0
            ]
          }
        ],
        "address": {
          "Input": 1
        }
      }
    }
  ]
}

encode it in base64 and send it to the wallet

{
    "transaction": "ewogICJ2ZXJzaW9uIjogMiwKICAic2VuZGVyIjogIjB4ZDVmNjQ3ZWRiNzdkNGZkYTMxZDAzMDQ1MDY0NDdmYjNjOTJlNTVhYWY3N2JjNWVkNGI3N2MzMzJkZDQ2MDVmYSIsCiAgImV4cGlyYXRpb24iOiBudWxsLAogICJnYXNEYXRhIjogewogICAgImJ1ZGdldCI6IG51bGwsCiAgICAicHJpY2UiOiBudWxsLAogICAgIm93bmVyIjogbnVsbCwKICAgICJwYXltZW50IjogbnVsbAogIH0sCiAgImlucHV0cyI6IFsKICAgIHsKICAgICAgIlB1cmUiOiB7CiAgICAgICAgImJ5dGVzIjogIlpBQUFBQUFBQUFBPSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIlB1cmUiOiB7CiAgICAgICAgImJ5dGVzIjogIjFmWkg3YmQ5VDlveDBEQkZCa1IvczhrdVZhcjNlOFh0UzNmRE10MUdCZm89IgogICAgICB9CiAgICB9CiAgXSwKICAiY29tbWFuZHMiOiBbCiAgICB7CiAgICAgICJTcGxpdENvaW5zIjogewogICAgICAgICJjb2luIjogewogICAgICAgICAgIkdhc0NvaW4iOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiYW1vdW50cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgIklucHV0IjogMAogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIlRyYW5zZmVyT2JqZWN0cyI6IHsKICAgICAgICAib2JqZWN0cyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgIk5lc3RlZFJlc3VsdCI6IFsKICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgIDAKICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFkZHJlc3MiOiB7CiAgICAgICAgICAiSW5wdXQiOiAxCiAgICAgICAgfQogICAgICB9CiAgICB9CiAgXQp9",
    "address": "0xd5f647edb77d4fda31d0304506447fb3c92e55aaf77bc5ed4b77c332dd4605fa"
}

the wallet will respond with the digest, so it can be found in the explorer https://suiscan.xyz/testnet/tx/GBqPRFR9sYfWA8rt2wCkcgZrctyYMj8Ufunxkjg5G8zt

{
    "digest": "GBqPRFR9sYfWA8rt2wCkcgZrctyYMj8Ufunxkjg5G8zt",
}

sui_signPersonalMessage

encode your message in base64 e.g. This is a message to be signed for SUI

{
    "address": "0xd5f647edb77d4fda31d0304506447fb3c92e55aaf77bc5ed4b77c332dd4605fa",
    "message": "VGhpcyBpcyBhIG1lc3NhZ2UgdG8gYmUgc2lnbmVkIGZvciBTVUk="
}

the wallet will sign it and respond with base64 encoded signature

{
    "signature": "APsZ7PvuAynXYxxfeo0Py4DWOnrUpwqHhJJ1F8aGB2nmS5Wv9dvVo8Gr7DKaXwPMqFaFNKsHb0Hej07R0L0NpQsZXLv/ORduxMYX0fw8dbHlnWC8WG0ymrlAmARpEibbhw==",
}

Copy link

vercel bot commented May 19, 2025

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
decentralized-relay-app ✅ Ready (Inspect) Visit Preview 💬 Add feedback May 21, 2025 8:05am
malicious-dapp-verify-simulation ✅ Ready (Inspect) Visit Preview 💬 Add feedback May 21, 2025 8:05am
react-dapp-v2 ✅ Ready (Inspect) Visit Preview 💬 Add feedback May 21, 2025 8:05am
8 Skipped Deployments
Name Status Preview Comments Updated (UTC)
appkit-react-wagmi-example ⬜️ Ignored (Inspect) May 21, 2025 8:05am
appkit-solana ⬜️ Ignored (Inspect) May 21, 2025 8:05am
chain-abstraction-demo ⬜️ Ignored (Inspect) Visit Preview May 21, 2025 8:05am
decentralized-relay-wallet ⬜️ Ignored (Inspect) Visit Preview May 21, 2025 8:05am
react-dapp-v2-cosmos-provider ⬜️ Ignored (Inspect) Visit Preview May 21, 2025 8:05am
react-dapp-v2-with-ethers ⬜️ Ignored (Inspect) Visit Preview May 21, 2025 8:05am
react-wallet-v2 ⬜️ Ignored (Inspect) Visit Preview 💬 Add feedback May 21, 2025 8:05am
smart-sessions-demo ⬜️ Ignored (Inspect) Visit Preview May 21, 2025 8:05am

Copy link

cloudflare-workers-and-pages bot commented May 19, 2025

Deploying demo-ai-agents with  Cloudflare Pages  Cloudflare Pages

Latest commit: 652f204
Status:🚫  Build failed.

View logs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants