contract:
(requires MetaMask)