From 98b58dce033301e979436171a36a0ce3ae41562e Mon Sep 17 00:00:00 2001 From: nolash Date: Mon, 10 May 2021 09:13:22 +0200 Subject: [PATCH] Add fungible minter --- out/AccountsIndex.json | 2 +- out/Declarator.json | 2 +- out/EIP165.interface | 1 + out/EIP165.json | 1 + out/EIP173.interface | 1 + out/EIP173.json | 1 + out/ERC20.interface | 1 + out/ERC20.json | 1 + out/Faucet.interface | 2 +- out/Faucet.json | 2 +- out/Minter.interface | 1 + out/Minter.json | 1 + out/OwnedAccepter.interface | 1 + out/OwnedAccepter.json | 1 + out/OwnedTaker.interface | 1 + out/OwnedTaker.json | 1 + requirements.txt | 2 ++ solidity/AccountsIndex.sol | 2 ++ solidity/Declarator.sol | 4 +++- solidity/EIP165.sol | 9 +++++++++ solidity/EIP173.sol | 12 ++++++++++++ solidity/ERC20.sol | 20 ++++++++++++++++++++ solidity/Faucet.sol | 7 ++++++- solidity/FungibleMinter.sol | 9 +++++++++ solidity/Minter.sol | 11 +++++++++++ solidity/OwnedAccepter.sol | 9 +++++++++ solidity/OwnedTaker.sol | 11 +++++++++++ 27 files changed, 110 insertions(+), 6 deletions(-) create mode 100644 out/EIP165.interface create mode 100644 out/EIP165.json create mode 100644 out/EIP173.interface create mode 100644 out/EIP173.json create mode 100644 out/ERC20.interface create mode 100644 out/ERC20.json create mode 100644 out/Minter.interface create mode 100644 out/Minter.json create mode 100644 out/OwnedAccepter.interface create mode 100644 out/OwnedAccepter.json create mode 100644 out/OwnedTaker.interface create mode 100644 out/OwnedTaker.json create mode 100644 requirements.txt create mode 100644 solidity/EIP165.sol create mode 100644 solidity/EIP173.sol create mode 100644 solidity/ERC20.sol create mode 100644 solidity/FungibleMinter.sol create mode 100644 solidity/Minter.sol create mode 100644 solidity/OwnedAccepter.sol create mode 100644 solidity/OwnedTaker.sol diff --git a/out/AccountsIndex.json b/out/AccountsIndex.json index b04db6c..eaa2d1b 100644 --- a/out/AccountsIndex.json +++ b/out/AccountsIndex.json @@ -1 +1 @@ -[{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"add","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"entry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"entryCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"have","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}] +[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addedAccount","type":"address"},{"indexed":true,"internalType":"uint256","name":"accountIndex","type":"uint256"}],"name":"AccountAdded","type":"event"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"add","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"entry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"entryCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"have","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}] diff --git a/out/Declarator.json b/out/Declarator.json index f1216c2..d6fd144 100644 --- a/out/Declarator.json +++ b/out/Declarator.json @@ -1 +1 @@ -[{"inputs":[{"internalType":"address","name":"_subject","type":"address"},{"internalType":"bytes32","name":"_proof","type":"bytes32"}],"name":"addDeclaration","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_declarator","type":"address"},{"internalType":"address","name":"_subject","type":"address"}],"name":"declaration","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_declarator","type":"address"},{"internalType":"uint256","name":"_idx","type":"uint256"}],"name":"declarationAddressAt","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_declarator","type":"address"}],"name":"declarationCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_subject","type":"address"},{"internalType":"uint256","name":"_idx","type":"uint256"}],"name":"declaratorAddressAt","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_subject","type":"address"}],"name":"declaratorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}] +[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_declarator","type":"address"},{"indexed":false,"internalType":"address","name":"_subject","type":"address"},{"indexed":false,"internalType":"bytes32","name":"_proof","type":"bytes32"}],"name":"DeclarationAdded","type":"event"},{"inputs":[{"internalType":"address","name":"_subject","type":"address"},{"internalType":"bytes32","name":"_proof","type":"bytes32"}],"name":"addDeclaration","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_declarator","type":"address"},{"internalType":"address","name":"_subject","type":"address"}],"name":"declaration","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_declarator","type":"address"},{"internalType":"uint256","name":"_idx","type":"uint256"}],"name":"declarationAddressAt","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_declarator","type":"address"}],"name":"declarationCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_subject","type":"address"},{"internalType":"uint256","name":"_idx","type":"uint256"}],"name":"declaratorAddressAt","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_subject","type":"address"}],"name":"declaratorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}] diff --git a/out/EIP165.interface b/out/EIP165.interface new file mode 100644 index 0000000..d1dd3af --- /dev/null +++ b/out/EIP165.interface @@ -0,0 +1 @@ +01ffc9a7 diff --git a/out/EIP165.json b/out/EIP165.json new file mode 100644 index 0000000..d893462 --- /dev/null +++ b/out/EIP165.json @@ -0,0 +1 @@ +[{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"}] diff --git a/out/EIP173.interface b/out/EIP173.interface new file mode 100644 index 0000000..dbcfe91 --- /dev/null +++ b/out/EIP173.interface @@ -0,0 +1 @@ +9493f8b2 diff --git a/out/EIP173.json b/out/EIP173.json new file mode 100644 index 0000000..23664bf --- /dev/null +++ b/out/EIP173.json @@ -0,0 +1 @@ +[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}] diff --git a/out/ERC20.interface b/out/ERC20.interface new file mode 100644 index 0000000..9f85f3c --- /dev/null +++ b/out/ERC20.interface @@ -0,0 +1 @@ +c6bb4b70 diff --git a/out/ERC20.json b/out/ERC20.json new file mode 100644 index 0000000..c0169f4 --- /dev/null +++ b/out/ERC20.json @@ -0,0 +1 @@ +[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"TransferFrom","type":"event"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}] diff --git a/out/Faucet.interface b/out/Faucet.interface index b555f1a..b6fe01a 100644 --- a/out/Faucet.interface +++ b/out/Faucet.interface @@ -1 +1 @@ -a2b094c3 +de344547 diff --git a/out/Faucet.json b/out/Faucet.json index f8eb026..e2a99c0 100644 --- a/out/Faucet.json +++ b/out/Faucet.json @@ -1 +1 @@ -[{"inputs":[],"name":"amount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"}],"name":"giveTo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"}] +[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"FaucetAmountChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_recipient","type":"address"},{"indexed":true,"internalType":"address","name":"_token","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"FaucetFail","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_recipient","type":"address"},{"indexed":true,"internalType":"address","name":"_token","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"FaucetUsed","type":"event"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"}],"name":"cooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"}],"name":"giveTo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}] diff --git a/out/Minter.interface b/out/Minter.interface new file mode 100644 index 0000000..4016ab7 --- /dev/null +++ b/out/Minter.interface @@ -0,0 +1 @@ +449a52f8 diff --git a/out/Minter.json b/out/Minter.json new file mode 100644 index 0000000..e22a182 --- /dev/null +++ b/out/Minter.json @@ -0,0 +1 @@ +[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_minter","type":"address"},{"indexed":true,"internalType":"address","name":"_beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Mint","type":"event"},{"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"mintTo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}] diff --git a/out/OwnedAccepter.interface b/out/OwnedAccepter.interface new file mode 100644 index 0000000..e3c2f66 --- /dev/null +++ b/out/OwnedAccepter.interface @@ -0,0 +1 @@ +37a47be4 diff --git a/out/OwnedAccepter.json b/out/OwnedAccepter.json new file mode 100644 index 0000000..ca6bbfa --- /dev/null +++ b/out/OwnedAccepter.json @@ -0,0 +1 @@ +[{"inputs":[],"name":"acceptOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}] diff --git a/out/OwnedTaker.interface b/out/OwnedTaker.interface new file mode 100644 index 0000000..4a2654f --- /dev/null +++ b/out/OwnedTaker.interface @@ -0,0 +1 @@ +6b578339 diff --git a/out/OwnedTaker.json b/out/OwnedTaker.json new file mode 100644 index 0000000..47caf58 --- /dev/null +++ b/out/OwnedTaker.json @@ -0,0 +1 @@ +[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_result","type":"address"}],"name":"OwnershipTaken","type":"event"},{"inputs":[{"internalType":"address","name":"_target","type":"address"}],"name":"takeOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}] diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..6da8732 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +pysha3==1.0.2 +ply==3.11 diff --git a/solidity/AccountsIndex.sol b/solidity/AccountsIndex.sol index 3eb943c..09a5a10 100644 --- a/solidity/AccountsIndex.sol +++ b/solidity/AccountsIndex.sol @@ -5,6 +5,8 @@ pragma solidity >=0.6.12; // File-version: 3 interface AccountsIndex { + event AccountAdded(address indexed addedAccount, uint256 indexed accountIndex); // AccountsIndex + function entryCount() external view returns (uint256); function entry(uint256) external view returns (address); function add(address _account) external returns (bool); diff --git a/solidity/Declarator.sol b/solidity/Declarator.sol index 413cc92..93825ce 100644 --- a/solidity/Declarator.sol +++ b/solidity/Declarator.sol @@ -2,9 +2,11 @@ pragma solidity >=0.6.12; // Author: Louis Holbrook 0826EDA1702D1E87C6E2875121D2E7BB88C2A746 // SPDX-License-Identifier: GPL-3.0-or-later -// File-version: 1 +// File-version: 2 interface Declarator { + event DeclarationAdded(address _declarator, address _subject, bytes32 _proof); + function declaration(address _declarator, address _subject) external view returns ( bytes32[] memory ); function declarationCount(address _declarator) external view returns ( uint256 ); function declarationAddressAt(address _declarator, uint256 _idx) external view returns ( address ); diff --git a/solidity/EIP165.sol b/solidity/EIP165.sol new file mode 100644 index 0000000..8bc4fea --- /dev/null +++ b/solidity/EIP165.sol @@ -0,0 +1,9 @@ +pragma solidity ^0.8.0; + +// Author: Louis Holbrook 0826EDA1702D1E87C6E2875121D2E7BB88C2A746 +// SPDX-License-Identifier: GPL-3.0-or-later +// File-version: 1 + +interface EIP165 { + function supportsInterface(bytes4 _sum) external pure returns (bool); +} diff --git a/solidity/EIP173.sol b/solidity/EIP173.sol new file mode 100644 index 0000000..3c685c8 --- /dev/null +++ b/solidity/EIP173.sol @@ -0,0 +1,12 @@ +pragma solidity ^0.8.0; + +// Author: Louis Holbrook 0826EDA1702D1E87C6E2875121D2E7BB88C2A746 +// SPDX-License-Identifier: GPL-3.0-or-later +// File-version: 1 + +interface EIP173 { + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); // EIP173 + + function owner() external view returns (address); + function transferOwnership(address _newOwner) external view returns (bool); +} diff --git a/solidity/ERC20.sol b/solidity/ERC20.sol new file mode 100644 index 0000000..b291053 --- /dev/null +++ b/solidity/ERC20.sol @@ -0,0 +1,20 @@ +pragma solidity >=0.6.12; + +// Author: Louis Holbrook 0826EDA1702D1E87C6E2875121D2E7BB88C2A746 +// SPDX-License-Identifier: GPL-3.0-or-later +// File-version: 1 + +interface ERC20 { + event Transfer(address indexed _from, address indexed _to, uint256 _value); + event TransferFrom(address indexed _from, address indexed _to, address indexed _spender, uint256 _value); + event Approval(address indexed _owner, address indexed _spender, uint256 _value); + + function transfer(address _to, uint256 _value) external returns (bool); + function transferFrom(address _from, address _to, uint256 _value) external returns (bool); + function approve(address _spender, uint256 _value) external returns (bool); + function name() external view returns (string memory); + function symbol() external view returns (string memory); + function decimals() external view returns (uint256); + function totalSupply() external view returns (uint256); + function allowance(address _owner, address _spender) external view returns(uint256); +} diff --git a/solidity/Faucet.sol b/solidity/Faucet.sol index a577d0c..5cd6ae4 100644 --- a/solidity/Faucet.sol +++ b/solidity/Faucet.sol @@ -5,8 +5,13 @@ pragma solidity >=0.6.12; // File-version: 5 interface Faucet { + event FaucetUsed(address indexed _recipient, address indexed _token, uint256 _value); + event FaucetFail(address indexed _recipient, address indexed _token, uint256 _value); + event FaucetAmountChange(uint256 _value); + function token() external returns (address); - function amount() external returns (uint256); + function tokenAmount() external returns (uint256); function setAmount(uint256 _amount) external returns (bool); function giveTo(address _recipient) external returns (bool); + function cooldown(address _recipient) external returns (uint256); } diff --git a/solidity/FungibleMinter.sol b/solidity/FungibleMinter.sol new file mode 100644 index 0000000..cb76fcf --- /dev/null +++ b/solidity/FungibleMinter.sol @@ -0,0 +1,9 @@ +pragma solidity >=0.6.12; + +// Author: Louis Holbrook 0826EDA1702D1E87C6E2875121D2E7BB88C2A746 +// SPDX-License-Identifier: GPL-3.0-or-later +// File-version: 1 + +interface FungibleMinter { + function mintedAt(uint256 _tokenId) external view returns (uint256); +} diff --git a/solidity/Minter.sol b/solidity/Minter.sol new file mode 100644 index 0000000..6e81bf4 --- /dev/null +++ b/solidity/Minter.sol @@ -0,0 +1,11 @@ +pragma solidity >=0.6.12; + +// Author: Louis Holbrook 0826EDA1702D1E87C6E2875121D2E7BB88C2A746 +// SPDX-License-Identifier: GPL-3.0-or-later +// File-version: 1 + +interface Minter { + event Mint(address indexed _minter, address indexed _beneficiary, uint256 value); + + function mintTo(address _beneficiary, uint256 value) external returns (bool); +} diff --git a/solidity/OwnedAccepter.sol b/solidity/OwnedAccepter.sol new file mode 100644 index 0000000..69f8f74 --- /dev/null +++ b/solidity/OwnedAccepter.sol @@ -0,0 +1,9 @@ +pragma solidity ^0.8.0; + +// Author: Louis Holbrook 0826EDA1702D1E87C6E2875121D2E7BB88C2A746 +// SPDX-License-Identifier: GPL-3.0-or-later +// File-version: 1 + +interface OwnerAcceptable { + function acceptOwnership() external view returns (bool); +} diff --git a/solidity/OwnedTaker.sol b/solidity/OwnedTaker.sol new file mode 100644 index 0000000..96b48cb --- /dev/null +++ b/solidity/OwnedTaker.sol @@ -0,0 +1,11 @@ +pragma solidity ^0.8.0; + +// Author: Louis Holbrook 0826EDA1702D1E87C6E2875121D2E7BB88C2A746 +// SPDX-License-Identifier: GPL-3.0-or-later +// File-version: 1 + +interface OwnerTakeable { + event OwnershipTaken(address _result); + + function takeOwnership(address _target) external view returns (bool); +}