Skip to content
Ethereum implementation of the AdEx protocol core
JavaScript Solidity Shell
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
abi add abi/Registry May 12, 2019
contracts Identity: quote consistency Nov 7, 2019
js add browser solc cdn url Aug 14, 2019
migrations full eslint, fix #51 Apr 2, 2019
resources/bytecode update IdentityFactory addresses May 9, 2019
scripts README: add verifying on etherscan Nov 27, 2018
test Merge branch 'solc-wrapper' of Aug 20, 2019
.eslintrc.js add eslint/prettier configs Apr 2, 2019
.gitattributes add .gitattributes Sep 25, 2018
.gitignore try adding package-lock to fix travis CI May 9, 2019
.prettierrc add eslint/prettier configs Apr 2, 2019
.travis.yml .travis.yml updated: run lint Apr 2, 2019 LICENSE added Nov 14, 2018
package-lock.json 3.3.0 Nov 1, 2019
package.json 3.3.0 Nov 1, 2019
truffle-config.js full eslint, fix #51 Apr 2, 2019


The Ethereum implementation of the AdEx Protocol.

This replaces adex-core.

This repository implements OUTPACE (off-chain unidirectional trustless payment channel) and a gas abstraction layer called AdEx Identity.

Please note

  • Every channel will eventually expire (after validUntil), allowing the non-withdrawn portion of the initial deposit to be received back by whoever opened the channel.
  • Channels can be created with any ERC20 token; if the underlying token of a channel is insecure or malicious, that also compromises the channel as well; this is out of scope of this contract, since this is a fundamental issue with any system that uses ERC20's; needless to say, the user needs to be aware of what token they're using/earning
  • For more details on how OUTPACE channels work, please read the specs: AdEx Protocol and OUTPACE.


truffle build # This is important cause js/IdentityProxyDeploy uses artifacts from there
npm test


The contract AdExCore from version v3.1.0, compiled with solc v0.5.6 is deployed here:

An Identity, initialized with no privileges, to be used as a basis for IdentityProxy:

An IdentityFactory, set up with the AdEx relayer:

And the Registry:

Deployment strategy

The full deploy processis as follows

  • Deploy AdExCore
  • Deploy an IdentityFactory
  • Deploy a single Identity, with no owners and no registry
  • Deploy a Registry

Verifying on etherscan

truffle compile
cat build/contracts/AdExCore.json | jq '.bytecode' # this is the bytecode you have to deploy
./scripts/ contracts/AdExCore.sol # this will output a bundled .sol code

Gas usage, from the tests

Measured with solc v0.5.6, commit d80fa80424ef7b8932399424f8d919d67b135a30

channelOpen: 69961
channelWithdrawExpired: 70470
channelWithdraw: 137117
execute: 89900
execRoutines: 114440
channelOpen, through execute: 115086


  • G0 Group: all issues discovered were of Low severity, and all were resolved
  • Sigma Prime: 4 issues discovered with "Informational" severity, all resolved


You can’t perform that action at this time.