eth-icp-abi-to-motoko
TypeScript icon, indicating that this package has built-in type declarations

0.2.53 • Public • Published

eth-icp-abi-to-motoko

Generate Motoko bindings from Ethereum contract ABIs - A bridge between Ethereum and Internet Computer.

Features

  • Generate type-safe Motoko bindings from Solidity contracts
  • Support for all Solidity types and events
  • Automatic ABI encoding/decoding
  • Built-in support for OpenZeppelin contracts
  • Easy integration with ICP canisters

Installation

# Global installation (recommended for CLI usage)
npm install -g eth-icp-abi-to-motoko

# Local installation
npm install eth-icp-abi-to-motoko

Usage

Command Line

# Generate bindings from a Solidity contract
abi-to-motoko -c path/to/Contract.sol -o output/Contract.mo

# Options
-c, --contract <path>    Path to the Solidity contract
-o, --output <path>      Output path for the generated Motoko bindings

Example

  1. Create a Solidity contract:
// PriceFeed.sol
pragma solidity ^0.8.20;

contract PriceFeed {
    struct TokenData {
        string symbol;
        uint256 price;
        uint256 marketCap;
    }

    event PriceUpdated(TokenData[] tokens);

    function updatePrices(TokenData[] calldata tokens) external {
        emit PriceUpdated(tokens);
    }
}
  1. Generate Motoko bindings:
abi-to-motoko -c PriceFeed.sol -o PriceFeed.mo
  1. Use in your ICP canister:
import PriceFeed "PriceFeed";

actor {
    public func updatePrices(tokens: [TokenData]) : async () {
        let encoded = PriceFeed.encodeUpdatePrices(tokens);
        // Send transaction to Ethereum...
    };
}

Generated Code

The generator creates:

  • Function signatures and encoders
  • Event signatures and decoders
  • Type definitions matching Solidity structs
  • Helper functions for ABI encoding/decoding

Requirements

  • Node.js >= 16.0.0
  • Solidity >= 0.8.0

License

MIT

Package Sidebar

Install

npm i eth-icp-abi-to-motoko

Weekly Downloads

4

Version

0.2.53

License

MIT

Unpacked Size

89.1 kB

Total Files

8

Last publish

Collaborators

  • talg70