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

Merged
merged 13 commits into from
Jun 11, 2025
Merged

feat: sui #884

merged 13 commits into from
Jun 11, 2025

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==",
  "transactionBytes": "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

send the message in plain text without encoding

{
    "address": "0xd5f647edb77d4fda31d0304506447fb3c92e55aaf77bc5ed4b77c332dd4605fa",
    "message": "This is a message to be signed for SUI"
}

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 Jun 10, 2025 10:53am
decentralized-relay-wallet ✅ Ready (Inspect) Visit Preview 💬 Add feedback Jun 10, 2025 10:53am
malicious-dapp-verify-simulation ✅ Ready (Inspect) Visit Preview 💬 Add feedback Jun 10, 2025 10:53am
react-dapp-v2 ✅ Ready (Inspect) Visit Preview 💬 Add feedback Jun 10, 2025 10:53am
react-wallet-v2 ✅ Ready (Inspect) Visit Preview 💬 Add feedback Jun 10, 2025 10:53am
6 Skipped Deployments
Name Status Preview Comments Updated (UTC)
appkit-react-wagmi-example ⬜️ Ignored (Inspect) Jun 10, 2025 10:53am
appkit-solana ⬜️ Ignored (Inspect) Jun 10, 2025 10:53am
chain-abstraction-demo ⬜️ Ignored (Inspect) Visit Preview Jun 10, 2025 10:53am
react-dapp-v2-cosmos-provider ⬜️ Ignored (Inspect) Visit Preview Jun 10, 2025 10:53am
react-dapp-v2-with-ethers ⬜️ Ignored (Inspect) Visit Preview Jun 10, 2025 10:53am
smart-sessions-demo ⬜️ Ignored (Inspect) Visit Preview Jun 10, 2025 10:53am

Copy link

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

Deploying demo-ai-agents with  Cloudflare Pages  Cloudflare Pages

Latest commit: f50182f
Status:🚫  Build failed.

View logs

@quetool

This comment was marked as duplicate.

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.

3 participants