An open API service indexing awesome lists of open source software.

https://github.com/eltneg/dummy-ethers-zig

Zig comptime implementation of Ether js contract initialization style
https://github.com/eltneg/dummy-ethers-zig

comptime ethers ethersjs solidity zig

Last synced: 3 months ago
JSON representation

Zig comptime implementation of Ether js contract initialization style

Awesome Lists containing this project

README

        

# Ethers zig (dummy)
It implements the ethers js contract initialization style using zig comptime. This is a practice project built to master zig comptime. I recommend checking out [zabi](https://github.com/Raiden1411/zabi) if you are looking for somthing that works.

Ether js contract initialisation from the [doc](https://docs.ethers.org/v6/getting-started/#starting-contracts):
```js
abi = [
"function decimals() view returns (string)",
"function symbol() view returns (string)",
"function balanceOf(address addr) view returns (uint)"
]

// Create a contract
contract = new Contract("dai.tokens.ethers.eth", abi, provider)
sym = await contract.symbol()
```

Ethers zig comptime contract initialisation:
```js
const fns = [_][:0]const u8{
"function decimals() view returns (string)",
"function symbol() view returns (string)",
"function balanceOf(address addr) view returns (uint)",
"function transfer(address to, uint amount)",
"event Transfer(address indexed from, address indexed to, uint amount)",
};
const contact = Contract(&fns).init(); // init should be able to accept provider and contract address
// balanceOf is now available to the contract instance
const balance = try contact.functions.balanceOf.call(.{ .addr = "eltneg.eth" });
std.debug.print("balance={?}\n", .{balance.value});
```

#### **Run `zig run main.zig` to see it in action**