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
- Host: GitHub
- URL: https://github.com/eltneg/dummy-ethers-zig
- Owner: eltNEG
- Created: 2024-05-09T12:04:38.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2024-05-09T12:38:52.000Z (about 1 year ago)
- Last Synced: 2025-01-22T10:18:17.331Z (5 months ago)
- Topics: comptime, ethers, ethersjs, solidity, zig
- Language: Zig
- Homepage:
- Size: 2.93 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: Readme.md
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**