From 02a0494f123876167736f7ad2a3263da66123ff6 Mon Sep 17 00:00:00 2001 From: nolash Date: Fri, 11 Dec 2020 07:48:54 +0100 Subject: [PATCH] Initial commit --- AccountsIndex.sol | 19 +++++++++++++++++++ ERC20.sol | 23 +++++++++++++++++++++++ Faucet.sol | 17 +++++++++++++++++ Makefile | 16 ++++++++++++++++ TransferApproval.sol | 20 ++++++++++++++++++++ 5 files changed, 95 insertions(+) create mode 100644 AccountsIndex.sol create mode 100644 ERC20.sol create mode 100644 Faucet.sol create mode 100644 Makefile create mode 100644 TransferApproval.sol diff --git a/AccountsIndex.sol b/AccountsIndex.sol new file mode 100644 index 0000000..a6d95c6 --- /dev/null +++ b/AccountsIndex.sol @@ -0,0 +1,19 @@ +pragma solidity >=0.6.12; + +// Author: Louis Holbrook 0826EDA1702D1E87C6E2875121D2E7BB88C2A746 +// SPDX-License-Identifier: GPL-3.0-or-later +// File-version: 1 + + +abstract contract AccountsIndex { + address[] public accounts; + mapping(address => uint256) public accountsIndex; + uint256 public count; + + event AccountAdded(address indexed addedAccount, uint256 indexed accountIndex); + + function addWriter(address _writer) public virtual returns (bool); + function deleteWriter(address _writer) public virtual returns (bool); + function add(address _account) external virtual returns (bool); + function have(address _account) external virtual view returns (bool); +} diff --git a/ERC20.sol b/ERC20.sol new file mode 100644 index 0000000..b831244 --- /dev/null +++ b/ERC20.sol @@ -0,0 +1,23 @@ +pragma solidity >=0.6.12; + +// Author: Louis Holbrook 0826EDA1702D1E87C6E2875121D2E7BB88C2A746 +// SPDX-License-Identifier: GPL-3.0-or-later +// File-version: 1 +// Description: The ERC20 standard interface as specified in EIP20 (sha256:9f843cbb25a737c9351b0b6a6f54b86864490d0d5284f6877b4929d481d34312) + + +abstract contract ERC20Core { + string public name; + string public symbol; + uint8 public decimals; + uint256 public totalSupply; + mapping (address => uint256) public balanceOf; + mapping (address => mapping (address => uint256)) public allowance; + + event Transfer(address indexed _from, address indexed _to, uint256 _value); + event Approval(address indexed _owner, address indexed _spender, uint256 _value); + + function transfer(address _to, uint256 _value) public virtual returns (bool); + function transferFrom(address _from, address _to, uint256 _value) public virtual returns (bool); + function approve(address _spender, uint256 _value) public virtual returns (bool); +} diff --git a/Faucet.sol b/Faucet.sol new file mode 100644 index 0000000..542fe8b --- /dev/null +++ b/Faucet.sol @@ -0,0 +1,17 @@ +pragma solidity >=0.6.12; + +// Author: Louis Holbrook 0826EDA1702D1E87C6E2875121D2E7BB88C2A746 +// SPDX-License-Identifier: GPL-3.0-or-later +// File-version: 1 + + +abstract contract Faucet { + uint256 public amount; + address public token; + + event FaucetUsed(address indexed _recipient, address indexed _token, uint256 _value); + event FaucetFail(address indexed _recipient, address indexed _token, uint256 _value); + + function setAmount(uint256 _amount) public virtual returns (bool); + function giveTo(address _recipient) public virtual returns (bool); +} diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..0507e1a --- /dev/null +++ b/Makefile @@ -0,0 +1,16 @@ +# Author: Louis Holbrook 0826EDA1702D1E87C6E2875121D2E7BB88C2A746 +# SPDX-License-Identifier: GPL-3.0-or-later +# File-version: 1 + +INPUTS = $(wildcard *.sol) +OUTPUTS = $(patsubst %.sol, %.abi, $(INPUTS)) + +%.abi: + solc $(basename $@).sol --abi | awk 'NR>3' > $@ + +all: $(OUTPUTS) + +clean: + rm -vf *.abi + +.PHONY: clean diff --git a/TransferApproval.sol b/TransferApproval.sol new file mode 100644 index 0000000..ddca3b3 --- /dev/null +++ b/TransferApproval.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 + + +abstract contract TransferApproval { + uint256 public serial; + mapping(uint256 => address) public requests; + mapping(address => bool) public approvers; + + event NewRequest(address indexed _sender, address indexed _recipient, address indexed _token, uint256 _value, uint256 _serial); + event NewExecution(uint256 serial); + event NewRejection(uint256 serial); + + function request(address _recipient, address _token, uint256 _value) public virtual returns (uint256); + function execute(uint256 _serial) public virtual returns (bool); + function reject(uint256 _serial) public virtual returns (bool); +}