Skip to content

Transform an array of transactions into a json for Gnosis Tx-Builder UX

License

Notifications You must be signed in to change notification settings

morpho-labs/gnosis-tx-builder

Repository files navigation

Gnosis Tx-Builder from a script

npm package Build Status Downloads Issues Commitizen Friendly Semantic Release

⚡🚀 Transform an array of transactions in a Transaction builder json for the Gnosis UX, based on ethers-js

Install

npm install @morpho-labs/gnosis-tx-builder
yarn add @morpho-labs/gnosis-tx-builder

Usage

Generate JSON

Generate a Tx builder json file:

import { ZeroAddress, parseEther } from "ethers";
import fs from "fs";

import TxBuilder, {
  ParsingError,
  ChecksumParsingError,
  TransactionParsingError,
} from "@morpho-labs/gnosis-tx-builder";

const safeAddress = "0x12341234123412341234123412341232412341234";

const transactions = [
  {
    to: ZeroAddress,
    value: parseEther("1").toString(),
    data: "0x",
  },
];

const batchJson = TxBuilder.batch(safeAddress, transactions);

// dump into a file
fs.writeFileSync("batchTx.json", JSON.stringify(batchJson, null, 2));

Now, with the json file, go to the Gnosis dApp, and select Transaction Builder app

Transaction builder

And then, drag and drop the batchTx.json file

img.png

And tada! 🎉🎉

Parse JSON

Parse transactions from a Tx Builder JSON file:

import fs from "fs";

import TxBuilder from "@morpho-labs/gnosis-tx-builder";

// read from a file
const batchJson = fs.readFileSync("batchTx.json");

try {
  const batch = TxBuilder.parse(batchJson);

  console.log(batch);
  /*
    [
        {
            to: "0x000000000000000000000000",
            value: "1000000000000000000",
            data: "0x",
        },
    ]
    */
} catch (e: ParsingError) {
  if (e instanceof ChecksumParsingError) console.debug(e.params); // { code: ErrorCode; expected: string; computed: string }
  if (e instanceof TransactionParsingError) console.debug(e.params); // { code: ErrorCode; index: number; parameter?: string }
  console.debug(e.params); // { code: ErrorCode }
}

Error Codes

You can import the error codes from the package

import { ErrorCode } from "@morpho-labs/gnosis-tx-builder";

Available codes

export enum ErrorCode {
  wrongFormat = "WRONG_FORMAT", //The json file don't match the expected format ({ meta:..., transactions: [...] })
  wrongTxFormat = "WRONG_TRANSACTION_FORMAT", //The transaction at index `index` doesn't match the expected format (not an object or parameter `parameter` doesn't have the right type)
  invalidChecksum = "INVALID_CHECKSUM", //The computed checksum doesn't match the expected one (the one in the file)
}

About

Transform an array of transactions into a json for Gnosis Tx-Builder UX

Resources

License

Stars

Watchers

Forks

Packages

No packages published