Making Wallet Development Easier with walletOS

Last week Agoric announced support for BLD and IST in Pine Street Labs’ walletOS product. This post will dive deeper into that announcement highlighting why it might matter as a developer and how to get started building new products using Agoric and walletOS.

Pine Street Labs develops software enabling businesses to ship products safer, faster, and to larger audiences. walletOS is an API for enabling transfers, staking, and more with 25+ blockchains with a single integration. Instead of cobbling support for each new chain that exists, teams opt for walletOS to manage the interface and integration for new blockchains and on-chain functionality. Users of walletOS are able to ship to the market faster, grow their product offering, and enjoy the benefits of using battle-tested software.

The API acts as middleware between secret keys, and the actual blockchain. Every API method is oriented towards a specific action like transfer or delegate. The response objects contain the necessary information and instructions for a signer to create a valid blockchain signature. Our API continues the rest of the work by helping finalize and broadcasting the transaction to the network. The API methods are uniform across all chains. In other words, using our API to transfer BLD on Agoric means that you can support 25+ blockchains without extra development work.

We added support for the Agoric blockchain enabling developers to easily integrate staking, and typical transaction workflows into their product. Without walletOS, engineers need to develop custom interfaces per chain, host RPC nodes, and develop indexing services per chain. We believe that by supporting Agoric’s BLD and IST tokens in walletOS, the Agoric community will enjoy a better developer experience and have the opportunity to launch novel products.

To showcase how simple a delegate transaction looks with our API, below is a request to delegate to a validator, and a response that you might see to complete the workflow. We have an end-to-end example of what transferring looks like on Ethereum as an additional resource.

Example Delegation Request from walletOS:

curl --request POST \
     --url https://walletos.pinestreetlabs.com/rpc/delegate \
     --header 'accept: application/json' \
     --header 'authorization: Basic KEY' \
     --header 'content-type: application/json' \
     --data '
{
  "amount": {
    "token": "agoric.agoric-3/token/native",
    "value": "100000"
  },
  "delegator": "agoric.agoric-3/addr/agoric1wegmcn6p6jaknt2xp2j56847c9ug3ca784nfnk",
  "to": "agoric.agoric-3/validator/agoricvaloper1k4v79jf7fxc69p39jnak48aehy8tq2q2hw8qps"
}
'

Example Delegation Response from walletOS

{
  "original_request": {
    "amount": {
      "token": "agoric.agoric-3/token/native",
      "value": "100000"
    },
    "delegator": "agoric.agoric-3/addr/agoric1wegmcn6p6jaknt2xp2j56847c9ug3ca784nfnk",
    "delegator_pubkey": null,
    "to": "agoric.agoric-3/validator/agoricvaloper1k4v79jf7fxc69p39jnak48aehy8tq2q2hw8qps"
  },
  "transactions": [
    {
      "chain_specific": {
        "account_number": 71351,
        "account_sequence": 2,
        "address": "agoric1wegmcn6p6jaknt2xp2j56847c9ug3ca784nfnk",
        "public_key": "0a1f2f636f736d6f732e63727970746f2e736563703235366b312e5075624b657912230a2103d9ea63f95f7829e7dc882231caed2db735fec63ad8452c62c50f688b91b1e48a"
      },
      "raw": "0a9f010a9c010a232f636f736d6f732e7374616b696e672e763162657461312e4d736744656c656761746512750a2d61676f726963317765676d636e3670366a616b6e74327870326a3536383437633975673363613738346e666e6b123461676f72696376616c6f706572316b347637396a663766786336397033396a6e616b3438616568793874713271326877387170731a0e0a0475626c64120631303030303012650a4f0a450a1f2f636f736d6f732e63727970746f2e736563703235366b312e5075624b657912220a20000000000000000000000000000000000000000000000000000000000000000012040a020801180212120a0c0a0475626c6412043933373910aeb90b1a00",
      "sign": [
        {
          "digest": "73500440f3687f99fd8cf17d5940c3dea1dc8c4c82d02631e4ddbe45b6d8cca5",
          "raw": "0a9f010a9c010a232f636f736d6f732e7374616b696e672e763162657461312e4d736744656c656761746512750a2d61676f726963317765676d636e3670366a616b6e74327870326a3536383437633975673363613738346e666e6b123461676f72696376616c6f706572316b347637396a663766786336397033396a6e616b3438616568793874713271326877387170731a0e0a0475626c64120631303030303012650a4f0a450a1f2f636f736d6f732e63727970746f2e736563703235366b312e5075624b657912220a20000000000000000000000000000000000000000000000000000000000000000012040a020801180212120a0c0a0475626c6412043933373910aeb90b1a00",
          "scheme": "ec_dsa",
          "signer": {
            "address": "agoric.agoric-3/addr/agoric1wegmcn6p6jaknt2xp2j56847c9ug3ca784nfnk"
          }
        }
      ]
    }
  ]
}

Today, the Agoric developer community can build staking products, wallets, exchanges, and more using walletOS. We have developer documentation available to help you get started.

Reach out to us if you are building on Agoric with walletOS. We will be happy to help.

If you have any questions, want to learn more, or want some inspiration on what to build next, leave a comment below! Chat soon!

5 Likes