Ethermint is a scalable and interoperable Ethereum library, built on Proof-of-Stake with fast-finality using the Cosmos SDK.

Ethermint

banner

Ethermint is a scalable and interoperable Ethereum library, built on Proof-of-Stake with fast-finality using the Cosmos SDK which runs on top of Tendermint Core consensus engine.

Note: Requires Go 1.17+

Installation

For prerequisites and detailed build instructions please read the Evmos Installation instructions. Once the dependencies are installed, run:

make install

Or check out the latest release.

Quick Start

To learn how the Ethermint works from a high-level perspective, go to the Introduction section from the documentation. You can also check the instructions to Run a Node.

For an example on how Ethermint can be used on any Cosmos-SDK chain, please refer to Evmos.

Community

The following chat channels and forums are a great spot to ask questions about Ethermint:

Contributing

Looking for a good place to start contributing? Check out some good first issues.

For additional instructions, standards and style guides, please refer to the Contributing document.

Careers

See our open positions on Cosmos Jobs, Notion, or feel free to reach out via email.

Comments
  • Fix CI to run solidity tests

    Fix CI to run solidity tests

    Closes: #XXX

    Description

    This PR updates some stale code in Makefile and .github/workflows/deploy-contract.yml to make the CI works with performing solidity test on CI builds.

    Some improvements:

    1. use make test-solidity in Github Actions instead of make test-contract
    2. Remove test-contract from Makefile. Contract & Solidity tests now can be run by make test-solidity.
    3. Remove installing solcjs from Makefile. This is no longer needed. Truffle inside solidity tests will handle installation of solcjs
    4. Add verbose logs parameter on yarn test to output ethermintd activities during CI test for better debugging

    For contributor use:

    • [x] Targeted PR against correct branch (see CONTRIBUTING.md)
    • [x] Linked to Github issue with discussion and accepted design OR link to spec that describes this work.
    • [x] Code follows the module structure standards.
    • [ ] Wrote unit and integration tests
    • [ ] Updated relevant documentation (docs/) or specification (x/<module>/spec/)
    • [ ] Added relevant godoc comments.
    • [ ] Added a relevant changelog entry to the Unreleased section in CHANGELOG.md
    • [ ] Re-reviewed Files changed in the Github PR explorer

    For admin use:

    • [ ] Added appropriate labels to PR (ex. WIP, R4R, docs, etc)
    • [ ] Reviewers assigned
    • [ ] Squashed all commits, uses message "Merge pull request #XYZ: [title]" (coding standards)
  • draft ADR-003 Contract Storage Backends

    draft ADR-003 Contract Storage Backends

    Closes: #XXX

    Description


    For contributor use:

    • [ ] Targeted PR against correct branch (see CONTRIBUTING.md)
    • [ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work.
    • [ ] Code follows the module structure standards.
    • [ ] Wrote unit and integration tests
    • [ ] Updated relevant documentation (docs/) or specification (x/<module>/spec/)
    • [ ] Added relevant godoc comments.
    • [ ] Added a relevant changelog entry to the Unreleased section in CHANGELOG.md
    • [ ] Re-reviewed Files changed in the Github PR explorer

    For admin use:

    • [ ] Added appropriate labels to PR (ex. WIP, R4R, docs, etc)
    • [ ] Reviewers assigned
    • [ ] Squashed all commits, uses message "Merge pull request #XYZ: [title]" (coding standards)
  • Problem: etherjs smartcontract cannot change state

    Problem: etherjs smartcontract cannot change state

    cannot change the state of the smart contract src: https://github.com/leejw51crypto/ethermint.git branch: etherjs folder: mytest/mytest

    how to reproduce

    env variable for testing

    MYMNEMONICS <- your mnemonics

    1. git clone https://github.com/leejw51crypto/ethermint.git
    2. cd ethermint
    3. git checkout etherjs
    4. cd mytest/mytest
    5. make
    

    when run with ganache

    BigNumber { _hex: '0x00', _isBigNumber: true }
    {
      nonce: 17,
      gasPrice: BigNumber { _hex: '0x04a817c800', _isBigNumber: true },
      gasLimit: BigNumber { _hex: '0xa2ae', _isBigNumber: true },
      to: '0x2831Fb598Fb659EC881585557C3e36414BfC32e5',
      value: BigNumber { _hex: '0x00', _isBigNumber: true },
      data: '0x6057361d0000000000000000000000000000000000000000000000000000000000000015',
      chainId: 1337,
      v: 2709,
      r: '0x14ecfc5d6e69a89278ab8e2a4334898f25e2677cc38e0bd509791b5a07bdffaf',
      s: '0x6fca8a9e61a78efe115f9983b3f1b89a79e1eca0331dd84f52a3a06d9da210fc',
      from: '0x48b212A71eBbB202F7cfD1aACee3A36FdE2Fbc51',
      hash: '0xe0e6d9b1f4802245fa8a652bcdbe02c8dbf300d15491b590ff1c8c105d10617e',
      type: null,
      wait: [Function (anonymous)]
    }
    BigNumber { _hex: '0x15', _isBigNumber: true }
    

    when run with ethermint

    BigNumber { _hex: '0x00', _isBigNumber: true }
    {
      nonce: 6,
      gasPrice: BigNumber { _hex: '0x14', _isBigNumber: true },
      gasLimit: BigNumber { _hex: '0x52d4', _isBigNumber: true },
      to: '0x5589184cE12715763c409b0e33ad6f8f075d0377',
      value: BigNumber { _hex: '0x00', _isBigNumber: true },
      data: '0x6057361d0000000000000000000000000000000000000000000000000000000000000015',
      chainId: 2,
      v: 39,
      r: '0x35db8a1ca2054e49c1d913ac3566f654a2c47072b71592926141af57afb93fed',
      s: '0x0ff0108bc624f304d329d78e6bb43c7da1ff60f436ae3626b47b7c33a24de54d',
      from: '0x48b212A71eBbB202F7cfD1aACee3A36FdE2Fbc51',
      hash: '0xac7a4efd5df15dd6b798b4f58bdc7f66e3e54eaf17f624e0525c539de57b14db',
      type: null,
      wait: [Function (anonymous)]
    }
    BigNumber { _hex: '0x00', _isBigNumber: true }
    
  • state sync don't fully work

    state sync don't fully work

    System info: ethermint main branch

    Steps to reproduce:

    1. start devnet
    2. start new node with state sync enabled
    3. query new node for the tx and states

    Expected behavior: tx query succesfully

    Actual behavior: tx not found

    Additional info:

    • chain state works fine though, for example, query contract state with eth_call works.
  • Upgrade SDK to 0.47

    Upgrade SDK to 0.47

    Closes: #1316, #1461

    There are a set of tasks we probably want to hit simulateously to this upgrade.

    • Move EVM Priority to its own custom Application side mempool
    • #1231
    • Move to dep injection and autocli.
    • Anything else anyone can think of? @fedekunze @nddeluca @facs95 @yihuang

    Description

    WIP


    For contributor use:

    • [ ] Targeted PR against correct branch (see CONTRIBUTING.md)
    • [ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work.
    • [ ] Code follows the module structure standards.
    • [ ] Wrote unit and integration tests
    • [ ] Updated relevant documentation (docs/) or specification (x/<module>/spec/)
    • [ ] Added relevant godoc comments.
    • [ ] Added a relevant changelog entry to the Unreleased section in CHANGELOG.md
    • [ ] Re-reviewed Files changed in the Github PR explorer

    For admin use:

    • [ ] Added appropriate labels to PR (ex. WIP, R4R, docs, etc)
    • [ ] Reviewers assigned
    • [ ] Squashed all commits, uses message "Merge pull request #XYZ: [title]" (coding standards)
  • CreationCode makes ethermintd exploded

    CreationCode makes ethermintd exploded

    System info:

    Max OS X
    Main (d7c9656d7704e77ed0f71ea45755cadc25dbd979)
    

    Steps to reproduce:

    1. Deploy CreationCode with the code below, using remix or any tool you like (https://gist.github.com/FrancoCRO/b198c1dc6d63626e92cd00f7fedd9406)
    2. Call CODE_HASH

    Expected behavior: Returns code hash

    Actual behavior: Ethermintd becomes unresponsive, and is crazy printing EVM stack logs for minutes, and you have to SIGKILL it

    Additional info: This CreationCode method is used by Uniswap-family swaps The PancakePair contract code is obtained from here (https://bscscan.com/address/0x0eD7e52944161450477ee417DE9Cd3a859b14fD0#code) And is called from here (https://bscscan.com/address/0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73#code)

  • do binary search to estimate gas

    do binary search to estimate gas

    Closes #268

    part of it is extracted into https://github.com/tharsis/ethermint/pull/276.

    Description


    For contributor use:

    • [x] Targeted PR against correct branch (see CONTRIBUTING.md)
    • [x] Linked to Github issue with discussion and accepted design OR link to spec that describes this work.
    • [x] Code follows the module structure standards.
    • [ ] Wrote unit and integration tests
    • [ ] Updated relevant documentation (docs/) or specification (x/<module>/spec/)
    • [ ] Added relevant godoc comments.
    • [ ] Added a relevant changelog entry to the Unreleased section in CHANGELOG.md
    • [ ] Re-reviewed Files changed in the Github PR explorer

    For admin use:

    • [ ] Added appropriate labels to PR (ex. WIP, R4R, docs, etc)
    • [ ] Reviewers assigned
    • [ ] Squashed all commits, uses message "Merge pull request #XYZ: [title]" (coding standards)
  • Problem: contract call which does lots of message calls is slow to execute

    Problem: contract call which does lots of message calls is slow to execute

    This PR is huge, added some guide for review in the comment section below.

    Description

    Closes: #710

    As profiled in the issue page, the bottleneck is the slowness of deep context stack, there's no easy way around it other than refactor the StateDB to use journal logs like what go-ethereum does, thus this big code refactoring.

    What this PR does

    • Implement a standalone statedb module in x/evm/statedb which implements vm.StateDB interface with the support of several keeper methods, the keeper interface is captured in statedb.Keeper.
    • The StateDB implementation keep all the dirty states in memory, at the end of tx execution, commit all the dirty changes to keeper at once
    • record all the modify operations in a list of journal logs, snapshot revert is done by undo part of the logs.
    • x/evm/statedb/{journal.go, access_list.go, state_object.go} are directly adapted from go-ethereum itself.

    Benchmark result

    BenchmarkMessageCall (improved 310X)

    Before

    BenchmarkMessageCall-16    	       1	25846269634 ns/op
    BenchmarkMessageCall-16    	       1	26773165908 ns/op
    BenchmarkMessageCall-16    	       1	25786298762 ns/op
    

    After

    BenchmarkMessageCall-16    	      12	  91367037 ns/op
    BenchmarkMessageCall-16    	      13	  82284757 ns/op
    BenchmarkMessageCall-16    	      14	  83061467 ns/op
    

    BenchmarkEmitLogs (improved 2.5X)

    Before

    BenchmarkEmitLogs-16    	      98	  12034965 ns/op
    BenchmarkEmitLogs-16    	      98	  12146658 ns/op
    BenchmarkEmitLogs-16    	      96	  12313053 ns/op
    

    After

    BenchmarkEmitLogs-16    	     225	   5288751 ns/op
    BenchmarkEmitLogs-16    	     232	   5189175 ns/op
    BenchmarkEmitLogs-16    	     222	   5191943 ns/op
    

    For contributor use:

    • [ ] Targeted PR against correct branch (see CONTRIBUTING.md)
    • [ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work.
    • [ ] Code follows the module structure standards.
    • [ ] Wrote unit and integration tests
    • [ ] Updated relevant documentation (docs/) or specification (x/<module>/spec/)
    • [ ] Added relevant godoc comments.
    • [ ] Added a relevant changelog entry to the Unreleased section in CHANGELOG.md
    • [ ] Re-reviewed Files changed in the Github PR explorer

    For admin use:

    • [ ] Added appropriate labels to PR (ex. WIP, R4R, docs, etc)
    • [ ] Reviewers assigned
    • [ ] Squashed all commits, uses message "Merge pull request #XYZ: [title]" (coding standards)
  • Geth v1.10.9 JSON-RPC endpoints

    Geth v1.10.9 JSON-RPC endpoints

    Some RPC endpoints that need to be added/revised after merging #231:

    • eth_resend
    • eth_fillTransaction
    • eth_feeHistory
    • eth_maxPriorityFeePerGas
    • personal_sendTransaction: updates
    • debug_intermediateRoots
    • personal_unpair
    • personal_initializeWallet
    • personal_listWallets
  • EVM Revert and Out-of-gas error doesn't follow the correct format

    EVM Revert and Out-of-gas error doesn't follow the correct format

    System info:

    0.0.0-308-g7e1b45b
    

    Steps to reproduce:

    1. Make a out-of-gas eth_call
    • Can use: yarn test --network ethermint proxy
    1. The out-of-gas error occured. However the JSON-RPC message is in a different format compared to ganache

    Expected behavior: [What you expected to happen]

     <   {
     <     "id": 1626419303744,
     <     "jsonrpc": "2.0",
     <     "error": {
     <       "message": "VM Exception while processing transaction: out of gas",
     <       "code": -32000,
     <       "data": {
     <         "0xf08cc2bfa30270de3f28f2d8349d2797e9e15251c0cd8c2555b581c8428f2904": {
     <           "error": "out of gas",
     <           "program_counter": 219,
     <           "return": "0x"
     <         },
     <         "name": "c"
     <       }
     <     }
     <   }
    

    Actual behavior: [What actually happened]

    
     <   {
     <     "jsonrpc": "2.0",
     <     "id": 1626419644885,
     <     "error": {
     <       "code": -32000,
     <       "message": "out of gas"
     <     }
     <   }
    

    Additional info: [Include gist of relevant config, logs, etc.]

    Since the out-of-gas error is correctly occured. But the returned message can't be parsed by truffle framework, returned in a test failed.

  • fix: issue #310

    fix: issue #310

    Closes: #310

    Description

    • fix make target build-docker-local-ethermint
    • fix make target localnet-start
      • add ip-addresses for localnet-setup generation
      • add localnet-setup folder to keep localnet-setup-artifacts
      • map localnet-setup-artifacts to containers
      • change start-docker.sh to pick up generated localnet-setup-artifacts

    For contributor use:

    • [ ] Targeted PR against correct branch (see CONTRIBUTING.md)
    • [ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work.
    • [ ] Code follows the module structure standards.
    • [ ] Wrote unit and integration tests
    • [ ] Updated relevant documentation (docs/) or specification (x/<module>/spec/)
    • [ ] Added relevant godoc comments.
    • [ ] Added a relevant changelog entry to the Unreleased section in CHANGELOG.md
    • [ ] Re-reviewed Files changed in the Github PR explorer

    For admin use:

    • [ ] Added appropriate labels to PR (ex. WIP, R4R, docs, etc)
    • [ ] Reviewers assigned
    • [ ] Squashed all commits, uses message "Merge pull request #XYZ: [title]" (coding standards)
  • build(deps): bump json-pointer from 0.6.1 to 0.6.2 in /tests/solidity

    build(deps): bump json-pointer from 0.6.1 to 0.6.2 in /tests/solidity

    Bumps json-pointer from 0.6.1 to 0.6.2.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the Security Alerts page.
  • wrong status and gas in debug_traceTransaction

    wrong status and gas in debug_traceTransaction

    System info: [main] branch

    Steps to reproduce:

    trace success tnx in testnet: curl --location --request POST 'http://localhost:8545' \ --header 'Content-Type: application/json' \ --data-raw '{ "jsonrpc": "2.0", "method": "debug_traceTransaction", "params": [ "0x91d9569bdc6e2a18dbda03601baa45b081307c7b8c07b772c7e7bf6f0892f8db" ], "id": 1 }'

    Expected behavior: should get "failed": false, "gas": 135101, and when pass with callTracer should get { "from": "0x110a55949b11d263fdd26f4760446de44d216e14", "gas": "0x168e", "gasUsed": "0x0", "input": "0x", "output": "0x", "to": "0x6bad0fb0c38a52921915462865275964f62ec9e9", "type": "CALL", "value": "0x12590b98808435f" } refund value without error

    Actual behavior: get "failed": true, "gas": 163914, and when pass with callTracer get "out of gas" error

    Additional info:

    1. balance change from tendermint events: 69667484395521009792-819570000000000000-14252689574316697128+82631294701814623+144065000000000000=54821921115906127287 aligned with 69667484395521009792-14252689574316697128-135101*5000000000000+82631294701814623=54821921115906127287

    Question: do we treat stack out of gas when refund amount is more the leftoverGas?

  • bug: don't replace ics23 with v0.8.0 with sdk v0.46.7+

    bug: don't replace ics23 with v0.8.0 with sdk v0.46.7+

    The sdk v0.46.7 release notes recommend that users bump ics23 to v0.9.0 and discontinue the usage of the replace statement in go.mod that has been used since the dragonberry patch.

    • https://github.com/evmos/ethermint/pull/1580
    • https://github.com/evmos/evmos/issues/1200
    • https://github.com/cosmos/cosmos-sdk/releases/tag/v0.46.7

    Please note that #1580 is targeting the release/v0.20.0 branch specifically.

    This is also patched in #1575, which targets main.

  • `testnet init-files` generates files in wrong directory

    `testnet init-files` generates files in wrong directory

    System info: commit, MacOS 12.2.1. Installed ethermintd using make install

    Steps to reproduce:

    1. ethermintd testnet init-files --v 1 -o singlenode/test --keyring-backend test

    Expected behavior: This command should create gentxs and node0 directories inside singlenode/test folder. node0 should contain ethermintd folder with all config and genesis files.

    Actual behavior: It generates evmosd directory inside node0

  • chore: lint tests

    chore: lint tests

    Closes: #XXX

    Description

    This PR lints the ethermint tests.

    note: along the way, I found somewhat of a bug. The .proto files referenced types.Int, which should be cosmossdk.io/math.Int.

    I fixed it, please let me know if it should be separated.


    For contributor use:

    • [ ] Targeted PR against correct branch (see CONTRIBUTING.md)
    • [ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work.
    • [ ] Code follows the module structure standards.
    • [ ] Wrote unit and integration tests
    • [ ] Updated relevant documentation (docs/) or specification (x/<module>/spec/)
    • [ ] Added relevant godoc comments.
    • [ ] Added a relevant changelog entry to the Unreleased section in CHANGELOG.md
    • [ ] Re-reviewed Files changed in the Github PR explorer

    For admin use:

    • [ ] Added appropriate labels to PR (ex. WIP, R4R, docs, etc)
    • [ ] Reviewers assigned
    • [ ] Squashed all commits, uses message "Merge pull request #XYZ: [title]" (coding standards)
  • build(deps): bump github.com/rs/cors from 1.8.2 to 1.8.3

    build(deps): bump github.com/rs/cors from 1.8.2 to 1.8.3

    Bumps github.com/rs/cors from 1.8.2 to 1.8.3.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Go implementation of Ethereum proof of stake

Prysm: An Ethereum Consensus Implementation Written in Go This is the core repository for Prysm, a Golang implementation of the Ethereum Consensus spe

Jan 1, 2023
A Verifyable Chain Relay for Proof of Stake Blockchains

A Verifyable Chain Relay for Proof of Stake Blockchains This repository contains

Nov 11, 2022
OmniFlix Hub is a blockchain built using Cosmos SDK and Tendermint and created with Starport.

OmniFlix Hub is the root chain of the OmniFlix Network. Sovereign chains and DAOs connect to the OmniFlix Hub to manage their web2 & web3 media operations (mint, manage, distribute & monetize) as well as community interactions.

Nov 10, 2022
demochain is a blockchain built using Cosmos SDK and Tendermint and created with Starport.

demochain demochain is a blockchain built using Cosmos SDK and Tendermint and created with Starport. Get started starport chain serve serve command i

Jun 21, 2022
loan is a blockchain built using Cosmos SDK and Tendermint and created with Starport.

loan loan is a blockchain built using Cosmos SDK and Tendermint and created with Starport. As a borrower you post a request for a loan and specify the

Dec 21, 2022
Berachain - A blockchain built using Cosmos SDK and Tendermint and created with Starport

berachain berachain is a blockchain built using Cosmos SDK and Tendermint and cr

Jan 26, 2022
Frontier Chain is a blockchain application built using Cosmos SDK and Tendermint.

Frontier Chain Frontier Chain is a blockchain application built using Cosmos SDK and Tendermint. Setup Initialize the blockchain with one validator no

Jul 12, 2022
Arbiter DAO: a blockchain built using Cosmos SDK and Tendermint

Arbiter DAO Arbiter DAO is a blockchain built using Cosmos SDK and Tendermint. Arbiter DAO is a Olympus DAO and Klima DAO fork brought to the cosmos e

Aug 22, 2022
Kava - Reference implementation of Kava, a blockchain for cross-chain DeFi. Built using the cosmos-sdk

DeFi for Crypto. Telegram | Medium | Discord Reference implementation of Kava, a

Apr 4, 2022
Ethereum go-ethereum - Official Golang implementation of the Ethereum protocol

Go Ethereum Official Golang implementation of the Ethereum protocol. Automated b

Feb 17, 2022
Jan 7, 2023
This library aims to make it easier to interact with Ethereum through de Go programming language by adding a layer of abstraction through a new client on top of the go-ethereum library.

Simple ethereum client Simple ethereum client aims to make it easier for the developers to interact with Ethereum through a new layer of abstraction t

May 1, 2022
An interoperable smart contract hub
An interoperable smart contract hub

Juno An interoperable smart contract hub which automatically executes, controls or documents a procedure of relevant events and actions according to t

Jan 1, 2023
The Cosmos-SDK is a framework for building blockchain applications in Golang.
The Cosmos-SDK is a framework for building blockchain applications in Golang.

The Cosmos-SDK is a framework for building blockchain applications in Golang. It is being used to build Gaia, the first implementation of the Cosmos Hub.

Nov 26, 2021
LEO (Low Ethereum Orbit) is an Ethereum Portal Network client.

LEO LEO (Low Ethereum Orbit) is an Ethereum Portal Network client. What makes LEO different from other Portal Network clients is that it uses libp2p f

Apr 19, 2022
Ethereum-vanity-wallet - A fork of https://github.com/meehow/ethereum-vanity-wallet but the key can be exported to a JSON keystore file

ethereum-vanity-wallet See https://github.com/meehow/ethereum-vanity-wallet This version: doesn't display the private key let's you interactively expo

Jan 2, 2022
Go-ethereum - Official Golang implementation of the Ethereum protocol

Go Ethereum Official Golang implementation of the Ethereum protocol. Automated b

Jan 4, 2022
a Golang sdk for working with DeFi protocols, and ethereum compatible blockchains
a Golang sdk for working with DeFi protocols, and ethereum compatible blockchains

A golang sdk for working with DeFi protocols and general utilities for working with ethereum-compatible blockchains. packages bclient bindings cli con

Dec 15, 2022
Arbitrum is a Layer 2 cryptocurrency platform that makes smart contracts scalable, fast, and private.
Arbitrum is a Layer 2 cryptocurrency platform that makes smart contracts scalable, fast, and private.

Arbitrum is a Layer 2 cryptocurrency platform that makes smart contracts scalable, fast, and private. Arbitrum interoperates closely with Ethereum, so Ethereum developers can easily cross-compile their contracts to run on Arbitrum. Arbitrum achieves these goals through a unique combination of incentives, network protocol design, and virtual machine architecture.

Jan 8, 2023