@hyperdivision/eth-multisig-wallet

Ethereum Multisig Wallet

Usage no npm install needed!

<script type="module">
  import hyperdivisionEthMultisigWallet from 'https://cdn.skypack.dev/@hyperdivision/eth-multisig-wallet';
</script>

README

eth-multisig-wallet

Build Status

Ethereum Multisig Wallet

Usage

const keygen = require('./lib/keygen')
const quorum = require('./lib/quorum-calc')
const signCall = require('./lib/wallet-sign')

const keypair = keygen()
const keypair2 = keygen()

const instance = await Wallet.new([keypair.address], quorum(0.5), quorum(0.5), quorum(0.5), quorum(0.5))

assert(await instance.isOwner.call(keypair.address) === true)
assert(await instance.isOwner.call(keypair2.address) === false)

const res = await instance.replaceOwner([
  signCall(
    0, // seq,
    instance.address,
    keypair,
    'replaceOwner',
    ['address', 'address'],
    [keypair.address, keypair2.address]
  )
], keypair.address, keypair2.address)

assert((await instance.seq.call()).toNumber() === 1)
assert(await instance.isOwner.call(keypair.address) === false)
assert(await instance.isOwner.call(keypair2.address) === true)

API

contract Wallet(address[] initialOwners, uint32 setQuorumQuorum, uint32 addOwnerQuorum, uint32 removeOwnerQuorum, uint32 replaceOwnerQuorum)

wallet.setQuorum(bytes[] signatures, string operation, uint32 minQuorum)

wallet.addOwner(bytes[] signatures, address owner)

wallet.removeOwner(bytes[] signatures, address owner)

wallet.replaceOwner(bytes[] signatures, address oldOwner, address newOwner)

License

ISC