Merge pull request #4 from GrupoSabra/master
Created AlgoFees contract, tests and playground commands. Added some fixes for AlgoPool and AlgoMiner.
This commit is contained in:
27 files changed
+20647
-3300
No files matched your search
+69
@@ -0,0 +1,69 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Numerics;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using AdvancedAlgos.AlgoToken.Framework.Ethereum;
|
||||
using Nethereum.Contracts;
|
||||
using Nethereum.RPC.Eth.DTOs;
|
||||
using Nethereum.Web3;
|
||||
|
||||
namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution
|
||||
{
|
||||
public class AlgoFees : SmartContract<AlgoFees>
|
||||
{
|
||||
private Function _registerMiner;
|
||||
private Function _unregisterMiner;
|
||||
private Function _mine;
|
||||
|
||||
private Function _addSystem;
|
||||
private Function _addCoreTeam;
|
||||
|
||||
private Function _getMinerCount;
|
||||
private Function _getMinerByIndex;
|
||||
|
||||
public AlgoFees(Web3 web3, IGasPriceProvider gasPriceProvider) : base(web3, gasPriceProvider) { }
|
||||
public AlgoFees(string contractAddress, Web3 web3, IGasPriceProvider gasPriceProvider) : base(contractAddress, web3, gasPriceProvider) { }
|
||||
|
||||
protected override string AbiResourceName => $"SmartContracts.src.bin.{nameof(AlgoFees)}.abi";
|
||||
protected override string BinResourceName => $"SmartContracts.src.bin.{nameof(AlgoFees)}.bin";
|
||||
protected override BigInteger DeploymentGasUnits => 1200000;
|
||||
|
||||
public Task<TransactionReceipt> DeployAsync(string tokenAddress)
|
||||
=> base.DeployAsync(tokenAddress);
|
||||
|
||||
protected override void Initialize(Contract contractDescriptor)
|
||||
{
|
||||
_registerMiner = contractDescriptor.GetFunction("registerMiner");
|
||||
_unregisterMiner = contractDescriptor.GetFunction("unregisterMiner");
|
||||
_mine = contractDescriptor.GetFunction("mine");
|
||||
|
||||
_addSystem = contractDescriptor.GetFunction("addSystem");
|
||||
_addCoreTeam = contractDescriptor.GetFunction("addCoreTeam");
|
||||
|
||||
_getMinerCount = contractDescriptor.GetFunction("getMinerCount");
|
||||
_getMinerByIndex = contractDescriptor.GetFunction("getMinerByIndex");
|
||||
}
|
||||
|
||||
public Task<TransactionReceipt> RegisterMinerAsync(string minerAddress) =>
|
||||
InvokeAsync(_registerMiner, 900000, minerAddress);
|
||||
|
||||
public Task<TransactionReceipt> UnregisterMinerAsync(string minerAddress) =>
|
||||
InvokeAsync(_unregisterMiner, 900000, minerAddress);
|
||||
|
||||
public Task<TransactionReceipt> MineAsync() =>
|
||||
InvokeAsync(_mine, 1500000);
|
||||
|
||||
public Task<TransactionReceipt> AddSystemAsync(string account) =>
|
||||
InvokeAsync(_addSystem, 900000, account);
|
||||
|
||||
public Task<TransactionReceipt> AddCoreTeamAsync(string account) =>
|
||||
InvokeAsync(_addCoreTeam, 900000, account);
|
||||
|
||||
public Task<BigInteger> GetMinerCountAsync() =>
|
||||
_getMinerCount.CallAsync<BigInteger>();
|
||||
|
||||
public Task<string> GetMinerByIndexAsync(BigInteger index) =>
|
||||
_getMinerByIndex.CallAsync<string>(index);
|
||||
}
|
||||
}
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.Algorithms
|
||||
{
|
||||
public static class FeesDistributionAlgorithm
|
||||
{
|
||||
private static decimal[] _categoryProportions = new decimal[]
|
||||
{
|
||||
1,
|
||||
10,
|
||||
20,
|
||||
30,
|
||||
40,
|
||||
50
|
||||
};
|
||||
|
||||
public static decimal[] Distribute(decimal totalAmount, long[] miners)
|
||||
{
|
||||
decimal totalProportion = 0;
|
||||
|
||||
for (int i = 0; i < 6; i++)
|
||||
{
|
||||
totalProportion += _categoryProportions[i] * miners[i];
|
||||
}
|
||||
|
||||
var allocationPercentage = new decimal[6];
|
||||
|
||||
for (int i = 0; i < 6; i++)
|
||||
{
|
||||
if (miners[i] > 0) allocationPercentage[i] = _categoryProportions[i] / totalProportion;
|
||||
}
|
||||
|
||||
var feePerMiner = new decimal[6];
|
||||
|
||||
for (int i = 0; i < 6; i++)
|
||||
{
|
||||
if (miners[i] > 0) feePerMiner[i] = Math.Round(totalAmount * allocationPercentage[i]);
|
||||
}
|
||||
|
||||
return feePerMiner;
|
||||
}
|
||||
}
|
||||
}
|
||||
+138
@@ -0,0 +1,138 @@
|
||||
pragma solidity 0.4.24;
|
||||
|
||||
import "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol";
|
||||
import "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol";
|
||||
|
||||
import "./IAlgoMiner.sol";
|
||||
import "./AlgoSystemRole.sol";
|
||||
import "./AlgoCoreTeamRole.sol";
|
||||
|
||||
contract AlgoFees is AlgoSystemRole, AlgoCoreTeamRole {
|
||||
using SafeERC20 for IERC20;
|
||||
|
||||
uint256 constant CAT_0_VALUE_PROPORTION = 1;
|
||||
uint256 constant CAT_1_VALUE_PROPORTION = 10;
|
||||
uint256 constant CAT_2_VALUE_PROPORTION = 20;
|
||||
uint256 constant CAT_3_VALUE_PROPORTION = 30;
|
||||
uint256 constant CAT_4_VALUE_PROPORTION = 40;
|
||||
uint256 constant CAT_5_VALUE_PROPORTION = 50;
|
||||
|
||||
IERC20 private _token;
|
||||
address[] private _miners;
|
||||
mapping(address => uint256) private _minersByAddress;
|
||||
|
||||
constructor(address tokenAddress)
|
||||
AlgoSystemRole()
|
||||
AlgoCoreTeamRole()
|
||||
public {
|
||||
_token = IERC20(tokenAddress);
|
||||
_miners.push(address(0)); // Reserved as a marker for unregistered miner.
|
||||
}
|
||||
|
||||
function registerMiner(address minerAddress) public onlyCoreTeam {
|
||||
require(_minersByAddress[minerAddress] == 0);
|
||||
|
||||
IAlgoMiner algoMiner = IAlgoMiner(minerAddress);
|
||||
|
||||
require(algoMiner.isAlgoMiner());
|
||||
|
||||
uint8 minerCategory = algoMiner.getCategory();
|
||||
|
||||
require(minerCategory >= 0 && minerCategory <= 5);
|
||||
|
||||
_minersByAddress[minerAddress] = _miners.length;
|
||||
_miners.push(minerAddress);
|
||||
}
|
||||
|
||||
function unregisterMiner(address minerAddress) public onlyCoreTeam {
|
||||
require(_miners.length > 1);
|
||||
|
||||
if(_miners.length == 2) {
|
||||
|
||||
// Just remove the only registered miner...
|
||||
delete _miners[1];
|
||||
_miners.length = 1;
|
||||
delete _minersByAddress[minerAddress];
|
||||
|
||||
} else {
|
||||
|
||||
if(_minersByAddress[minerAddress] != _miners.length) {
|
||||
// Move the latest miner to the gap...
|
||||
_miners[_minersByAddress[minerAddress]] = _miners[_miners.length - 1];
|
||||
}
|
||||
|
||||
delete _miners[_miners.length - 1];
|
||||
_miners.length--;
|
||||
delete _minersByAddress[minerAddress];
|
||||
}
|
||||
}
|
||||
|
||||
function mine() public onlySystem {
|
||||
require(_miners.length > 1);
|
||||
|
||||
uint256 currentFeesBalance = _token.balanceOf(address(this));
|
||||
|
||||
require(currentFeesBalance > 0);
|
||||
|
||||
// Count how many ENABLED miners we have for each category...
|
||||
uint256[6] memory miners;
|
||||
|
||||
for(uint256 i = 1; i < _miners.length; i++) {
|
||||
IAlgoMiner algoMiner = IAlgoMiner(_miners[i]);
|
||||
|
||||
if(!algoMiner.isMining()) continue;
|
||||
|
||||
uint8 minerCategory = algoMiner.getCategory();
|
||||
|
||||
if(minerCategory == 0) {
|
||||
miners[0]++;
|
||||
} else if(minerCategory == 1) {
|
||||
miners[1]++;
|
||||
} else if(minerCategory == 2) {
|
||||
miners[2]++;
|
||||
} else if(minerCategory == 3) {
|
||||
miners[3]++;
|
||||
} else if(minerCategory == 4) {
|
||||
miners[4]++;
|
||||
} else if(minerCategory == 5) {
|
||||
miners[5]++;
|
||||
}
|
||||
}
|
||||
|
||||
// Calculate the fee to pay per miner according to its category...
|
||||
uint256 totalProportion = CAT_0_VALUE_PROPORTION * miners[0] +
|
||||
CAT_1_VALUE_PROPORTION * miners[1] +
|
||||
CAT_2_VALUE_PROPORTION * miners[2] +
|
||||
CAT_3_VALUE_PROPORTION * miners[3] +
|
||||
CAT_4_VALUE_PROPORTION * miners[4] +
|
||||
CAT_5_VALUE_PROPORTION * miners[5];
|
||||
|
||||
uint256[6] memory feePerMiner;
|
||||
|
||||
feePerMiner[0] = currentFeesBalance * CAT_0_VALUE_PROPORTION / totalProportion;
|
||||
feePerMiner[1] = currentFeesBalance * CAT_1_VALUE_PROPORTION / totalProportion;
|
||||
feePerMiner[2] = currentFeesBalance * CAT_2_VALUE_PROPORTION / totalProportion;
|
||||
feePerMiner[3] = currentFeesBalance * CAT_3_VALUE_PROPORTION / totalProportion;
|
||||
feePerMiner[4] = currentFeesBalance * CAT_4_VALUE_PROPORTION / totalProportion;
|
||||
feePerMiner[5] = currentFeesBalance * CAT_5_VALUE_PROPORTION / totalProportion;
|
||||
|
||||
// Transfer the fees to ENABLED miners...
|
||||
for(i = 1; i < _miners.length; i++) {
|
||||
algoMiner = IAlgoMiner(_miners[i]);
|
||||
|
||||
if(!algoMiner.isMining()) continue;
|
||||
|
||||
minerCategory = algoMiner.getCategory();
|
||||
|
||||
_token.safeTransfer(algoMiner.getMiner(), feePerMiner[minerCategory]);
|
||||
}
|
||||
}
|
||||
|
||||
function getMinerCount() public view returns (uint256) {
|
||||
return _miners.length - 1;
|
||||
}
|
||||
|
||||
function getMinerByIndex(uint256 index) public view returns (address) {
|
||||
return _miners[index + 1];
|
||||
}
|
||||
}
|
||||
+10
@@ -136,6 +136,8 @@ contract AlgoMiner is AlgoSystemRole, AlgoCoreTeamRole, AlgoSupervisorRole, IAlg
|
||||
|
||||
uint256 tokens = _currentYearSupply / DAYS_PER_YEAR;
|
||||
|
||||
require(tokens > 0);
|
||||
|
||||
_token.safeTransfer(_miner, tokens);
|
||||
}
|
||||
|
||||
@@ -146,4 +148,12 @@ contract AlgoMiner is AlgoSystemRole, AlgoCoreTeamRole, AlgoSupervisorRole, IAlg
|
||||
function getCategory() public view returns (uint8) {
|
||||
return _category;
|
||||
}
|
||||
|
||||
function isMining() public view returns (bool) {
|
||||
return _state == MinerState.Activated && _mining;
|
||||
}
|
||||
|
||||
function getMiner() public view returns (address) {
|
||||
return _miner;
|
||||
}
|
||||
}
|
||||
+4
@@ -19,6 +19,7 @@ contract AlgoPool is AlgoCoreTeamRole {
|
||||
|
||||
uint16 private _poolType;
|
||||
IERC20 private _token;
|
||||
mapping(address => bool) _fundedMiners;
|
||||
|
||||
constructor(uint16 poolType, address tokenAddress)
|
||||
AlgoCoreTeamRole()
|
||||
@@ -28,6 +29,8 @@ contract AlgoPool is AlgoCoreTeamRole {
|
||||
}
|
||||
|
||||
function trasferToMiner(address minerAddress) public onlyCoreTeam {
|
||||
require(!_fundedMiners[minerAddress]);
|
||||
|
||||
IAlgoMiner algoMiner = IAlgoMiner(minerAddress);
|
||||
|
||||
require(algoMiner.isAlgoMiner());
|
||||
@@ -54,6 +57,7 @@ contract AlgoPool is AlgoCoreTeamRole {
|
||||
|
||||
require(value > 0);
|
||||
|
||||
_fundedMiners[minerAddress] = true;
|
||||
_token.safeTransfer(minerAddress, value);
|
||||
}
|
||||
}
|
||||
+2
@@ -3,4 +3,6 @@ pragma solidity 0.4.24;
|
||||
contract IAlgoMiner {
|
||||
function isAlgoMiner() public pure returns (bool);
|
||||
function getCategory() public view returns (uint8);
|
||||
function isMining() public view returns (bool);
|
||||
function getMiner() public view returns (address);
|
||||
}
|
||||
+15505
File diff suppressed because it is too large.
Load diff
+1
@@ -0,0 +1 @@
|
||||
[{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"minerAddress","type":"address"}],"name":"registerMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSystem","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getMinerByIndex","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isCoreTeam","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"minerAddress","type":"address"}],"name":"unregisterMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"mine","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMinerCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}]
|
||||
+1
@@ -0,0 +1 @@
|
||||
608060405234801561001057600080fd5b50604051602080610edc8339810160405251610034336401000000006100a2810204565b610046336401000000006100bd810204565b60028054600160a060020a03909216600160a060020a0319928316179055600380546001810182556000919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091169055610163565b6100ba600082640100000000610c436100d582021704565b50565b6100ba600182640100000000610c436100d582021704565b600160a060020a03811615156100ea57600080fd5b6100fd828264010000000061012c810204565b1561010757600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561014357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610d6a806101726000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632e6b6849811461009a578063341ccfcb146100bd57806334cdcf26146100de5780633d19ab1314610113578063608d3d3d1461014757806374be75921461016857806381f909f31461018957806399f4b251146101aa578063bb52c137146101bf578063d43acc79146101e6578063e9d61859146101fb575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a0360043516610210565b005b3480156100c957600080fd5b506100bb600160a060020a0360043516610230565b3480156100ea57600080fd5b506100ff600160a060020a03600435166103e1565b604080519115158252519081900360200190f35b34801561011f57600080fd5b5061012b6004356103f9565b60408051600160a060020a039092168252519081900360200190f35b34801561015357600080fd5b506100ff600160a060020a0360043516610428565b34801561017457600080fd5b506100bb600160a060020a036004351661043b565b34801561019557600080fd5b506100bb600160a060020a0360043516610458565b3480156101b657600080fd5b506100bb6105e7565b3480156101cb57600080fd5b506101d4610b0a565b60408051918252519081900360200190f35b3480156101f257600080fd5b506100bb610b15565b34801561020757600080fd5b506100bb610b20565b61021933610428565b151561022457600080fd5b61022d81610b29565b50565b60008061023c33610428565b151561024757600080fd5b600160a060020a0383166000908152600460205260409020541561026a57600080fd5b82915081600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156102ab57600080fd5b505af11580156102bf573d6000803e3d6000fd5b505050506040513d60208110156102d557600080fd5b505115156102e257600080fd5b81600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032057600080fd5b505af1158015610334573d6000803e3d6000fd5b505050506040513d602081101561034a57600080fd5b50519050600060ff821610801590610366575060058160ff1611155b151561037157600080fd5b505060038054600160a060020a039092166000818152600460205260408120849055600184018355919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b60006103f3818363ffffffff610b3a16565b92915050565b600060038260010181548110151561040d57fe5b600091825260209091200154600160a060020a031692915050565b60006103f360018363ffffffff610b3a16565b610444336103e1565b151561044f57600080fd5b61022d81610b71565b61046133610428565b151561046c57600080fd5b60035460011061047b57600080fd5b600354600214156104e75760038054600190811061049557fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916905560016104c8600382610cdd565b50600160a060020a03811660009081526004602052604081205561022d565b600354600160a060020a038216600090815260046020526040902054146105815760038054600019810190811061051a57fe5b6000918252602080832090910154600160a060020a038481168452600490925260409092205460038054929093169291811061055257fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b60038054600019810190811061059357fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916905560038054906105cc906000198301610cdd565b50600160a060020a0316600090815260046020526040812055565b60006105f1610d01565b6000806000806105ff610d01565b610608336103e1565b151561061357600080fd5b60035460011061062257600080fd5b600254604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561068857600080fd5b505af115801561069c573d6000803e3d6000fd5b505050506040513d60208110156106b257600080fd5b50519650600087116106c357600080fd5b600194505b6003548510156108725760038054869081106106e057fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561073e57600080fd5b505af1158015610752573d6000803e3d6000fd5b505050506040513d602081101561076857600080fd5b5051151561077557610867565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156107b357600080fd5b505af11580156107c7573d6000803e3d6000fd5b505050506040513d60208110156107dd57600080fd5b5051925060ff831615156107ff578560005b6020020180516001019052610867565b8260ff1660011415610813578560016107ef565b8260ff1660021415610827578560026107ef565b8260ff166003141561083b578560036107ef565b8260ff166004141561084f578560046107ef565b826Line truncated
|
||||
+203
@@ -0,0 +1,203 @@
|
||||
{
|
||||
"abi": [
|
||||
{
|
||||
"constant": false,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "account",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "addCoreTeam",
|
||||
"outputs": [],
|
||||
"payable": false,
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": false,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "minerAddress",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "registerMiner",
|
||||
"outputs": [],
|
||||
"payable": false,
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": true,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "account",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "isSystem",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "",
|
||||
"type": "bool"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": true,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "index",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "getMinerByIndex",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": true,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "account",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "isCoreTeam",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "",
|
||||
"type": "bool"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": false,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "account",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "addSystem",
|
||||
"outputs": [],
|
||||
"payable": false,
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": false,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "minerAddress",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "unregisterMiner",
|
||||
"outputs": [],
|
||||
"payable": false,
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": false,
|
||||
"inputs": [],
|
||||
"name": "mine",
|
||||
"outputs": [],
|
||||
"payable": false,
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": true,
|
||||
"inputs": [],
|
||||
"name": "getMinerCount",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": false,
|
||||
"inputs": [],
|
||||
"name": "renounceCoreTeam",
|
||||
"outputs": [],
|
||||
"payable": false,
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": false,
|
||||
"inputs": [],
|
||||
"name": "renounceSystem",
|
||||
"outputs": [],
|
||||
"payable": false,
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"name": "tokenAddress",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "constructor"
|
||||
}
|
||||
],
|
||||
"bytecode": "608060405234801561001057600080fd5b50604051602080610edc8339810160405251610034336401000000006100a2810204565b610046336401000000006100bd810204565b60028054600160a060020a03909216600160a060020a0319928316179055600380546001810182556000919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091169055610163565b6100ba600082640100000000610c436100d582021704565b50565b6100ba600182640100000000610c436100d582021704565b600160a060020a03811615156100ea57600080fd5b6100fd828264010000000061012c810204565b1561010757600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561014357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610d6a806101726000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632e6b6849811461009a578063341ccfcb146100bd57806334cdcf26146100de5780633d19ab1314610113578063608d3d3d1461014757806374be75921461016857806381f909f31461018957806399f4b251146101aa578063bb52c137146101bf578063d43acc79146101e6578063e9d61859146101fb575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a0360043516610210565b005b3480156100c957600080fd5b506100bb600160a060020a0360043516610230565b3480156100ea57600080fd5b506100ff600160a060020a03600435166103e1565b604080519115158252519081900360200190f35b34801561011f57600080fd5b5061012b6004356103f9565b60408051600160a060020a039092168252519081900360200190f35b34801561015357600080fd5b506100ff600160a060020a0360043516610428565b34801561017457600080fd5b506100bb600160a060020a036004351661043b565b34801561019557600080fd5b506100bb600160a060020a0360043516610458565b3480156101b657600080fd5b506100bb6105e7565b3480156101cb57600080fd5b506101d4610b0a565b60408051918252519081900360200190f35b3480156101f257600080fd5b506100bb610b15565b34801561020757600080fd5b506100bb610b20565b61021933610428565b151561022457600080fd5b61022d81610b29565b50565b60008061023c33610428565b151561024757600080fd5b600160a060020a0383166000908152600460205260409020541561026a57600080fd5b82915081600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156102ab57600080fd5b505af11580156102bf573d6000803e3d6000fd5b505050506040513d60208110156102d557600080fd5b505115156102e257600080fd5b81600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032057600080fd5b505af1158015610334573d6000803e3d6000fd5b505050506040513d602081101561034a57600080fd5b50519050600060ff821610801590610366575060058160ff1611155b151561037157600080fd5b505060038054600160a060020a039092166000818152600460205260408120849055600184018355919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b60006103f3818363ffffffff610b3a16565b92915050565b600060038260010181548110151561040d57fe5b600091825260209091200154600160a060020a031692915050565b60006103f360018363ffffffff610b3a16565b610444336103e1565b151561044f57600080fd5b61022d81610b71565b61046133610428565b151561046c57600080fd5b60035460011061047b57600080fd5b600354600214156104e75760038054600190811061049557fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916905560016104c8600382610cdd565b50600160a060020a03811660009081526004602052604081205561022d565b600354600160a060020a038216600090815260046020526040902054146105815760038054600019810190811061051a57fe5b6000918252602080832090910154600160a060020a038481168452600490925260409092205460038054929093169291811061055257fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b60038054600019810190811061059357fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916905560038054906105cc906000198301610cdd565b50600160a060020a0316600090815260046020526040812055565b60006105f1610d01565b6000806000806105ff610d01565b610608336103e1565b151561061357600080fd5b60035460011061062257600080fd5b600254604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561068857600080fd5b505af115801561069c573d6000803e3d6000fd5b505050506040513d60208110156106b257600080fd5b50519650600087116106c357600080fd5b600194505b6003548510156108725760038054869081106106e057fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561073e57600080fd5b505af1158015610752573d6000803e3d6000fd5b505050506040513d602081101561076857600080fd5b5051151561077557610867565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156107b357600080fd5b505af11580156107c7573d6000803e3d6000fd5b505050506040513d60208110156107dd57600080fd5b5051925060ff831615156107ff578560005b6020020180516001019052610867565b8260ff1660011415610813578560016107ef565b8260ff1660021415610827578560026107ef565b8260ff166003141561083b578560036107ef565b8260ff166004141561084f5785Line truncated
|
||||
"functionHashes": {
|
||||
"addCoreTeam(address)": "2e6b6849",
|
||||
"addSystem(address)": "74be7592",
|
||||
"getMinerByIndex(uint256)": "3d19ab13",
|
||||
"getMinerCount()": "bb52c137",
|
||||
"isCoreTeam(address)": "608d3d3d",
|
||||
"isSystem(address)": "34cdcf26",
|
||||
"mine()": "99f4b251",
|
||||
"registerMiner(address)": "341ccfcb",
|
||||
"renounceCoreTeam()": "d43acc79",
|
||||
"renounceSystem()": "e9d61859",
|
||||
"unregisterMiner(address)": "81f909f3"
|
||||
},
|
||||
"gasEstimates": {
|
||||
"creation": {
|
||||
"codeDepositCost": "686800",
|
||||
"executionCost": "infinite",
|
||||
"totalCost": "infinite"
|
||||
},
|
||||
"external": {
|
||||
"addCoreTeam(address)": "infinite",
|
||||
"addSystem(address)": "infinite",
|
||||
"getMinerByIndex(uint256)": "980",
|
||||
"getMinerCount()": "633",
|
||||
"isCoreTeam(address)": "infinite",
|
||||
"isSystem(address)": "infinite",
|
||||
"mine()": "infinite",
|
||||
"registerMiner(address)": "infinite",
|
||||
"renounceCoreTeam()": "infinite",
|
||||
"renounceSystem()": "infinite",
|
||||
"unregisterMiner(address)": "infinite"
|
||||
}
|
||||
}
|
||||
}
|
||||
+2848
-2175
File diff suppressed because it is too large.
Load diff
+1
-1
@@ -1 +1 @@
|
||||
[{"constant":false,"inputs":[],"name":"pauseMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isAlgoMiner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[],"name":"startMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newMinerAddress","type":"address"}],"name":"migrateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSupervisor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSystem","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"stopAndRemoveOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"resumeMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isCoreTeam","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCategory","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSupervisor","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"mine","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"deactivateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwnerAddress","type":"address"}],"name":"resetMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"activateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSupervisor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"DAYS_PER_YEAR","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"stopMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"minerType","type":"uint16"},{"name":"category","type":"uint8"},{"name":"ownerAddress","type":"address"},{"name":"tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}]
|
||||
[{"constant":false,"inputs":[],"name":"pauseMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isAlgoMiner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"isMining","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"startMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newMinerAddress","type":"address"}],"name":"migrateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSupervisor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMiner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSystem","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"stopAndRemoveOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"resumeMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isCoreTeam","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCategory","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSupervisor","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"mine","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"deactivateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwnerAddress","type":"address"}],"name":"resetMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"activateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSupervisor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"DAYS_PER_YEAR","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"stopMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"minerType","type":"uint16"},{"name":"category","type":"uint8"},{"name":"ownerAddress","type":"address"},{"name":"tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}]
|
||||
+1
-1
@@ -1 +1 @@
|
||||
60806040523480156200001157600080fd5b5060405160808062000fb883398101604090815281516020830151918301516060909301519092906200004d33640100000000620000de810204565b6200006133640100000000620000fc810204565b620000753364010000000062000117810204565b6003805461ffff191661ffff959095169490941762ff000019166201000060ff949094169390930292909217630100000060b860020a0319166301000000600160a060020a03928316021790925560048054600160a060020a03191691909216179055620001c5565b620000f960008264010000000062000d1d6200013282021704565b50565b620000f960018264010000000062000d1d6200013282021704565b620000f960028264010000000062000d1d6200013282021704565b600160a060020a03811615156200014857600080fd5b6200015d82826401000000006200018d810204565b156200016857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a0382161515620001a557600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610de380620001d56000396000f3006080604052600436106101275763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663162f986d811461012c5780631777fb4b1461014357806321b79d981461016c578063231d4e2a1461018157806329d10b6e146101a25780632e6b6849146101c357806334cdcf26146101e4578063363aa6c714610205578063427534a41461021a578063608d3d3d1461022f57806374be75921461025057806380258e471461027157806381a244591461029c57806399f4b251146102bd5780639e614ca0146102d2578063ada436e9146102e7578063b2a32cd514610308578063be9524941461031d578063c6846ef814610332578063d43acc7914610359578063da4086791461036e578063e9d6185914610383575b600080fd5b34801561013857600080fd5b50610141610398565b005b34801561014f57600080fd5b506101586103fe565b604080519115158252519081900360200190f35b34801561017857600080fd5b50610141610403565b34801561018d57600080fd5b50610141600160a060020a03600435166104a7565b3480156101ae57600080fd5b50610141600160a060020a0360043516610593565b3480156101cf57600080fd5b50610141600160a060020a03600435166105b0565b3480156101f057600080fd5b50610158600160a060020a03600435166105cd565b34801561021157600080fd5b506101416105e5565b34801561022657600080fd5b5061014161068e565b34801561023b57600080fd5b50610158600160a060020a03600435166106f1565b34801561025c57600080fd5b50610141600160a060020a0360043516610704565b34801561027d57600080fd5b50610286610721565b6040805160ff9092168252519081900360200190f35b3480156102a857600080fd5b50610158600160a060020a0360043516610730565b3480156102c957600080fd5b50610141610743565b3480156102de57600080fd5b50610141610915565b3480156102f357600080fd5b50610141600160a060020a036004351661096f565b34801561031457600080fd5b50610141610a05565b34801561032957600080fd5b50610141610b18565b34801561033e57600080fd5b50610347610b23565b60408051918252519081900360200190f35b34801561036557600080fd5b50610141610b29565b34801561037a57600080fd5b50610141610b32565b34801561038f57600080fd5b50610141610bbf565b6103a133610730565b15156103ac57600080fd5b600160045460a060020a900460ff1660038111156103c657fe5b146103d057600080fd5b600480546002919074ff0000000000000000000000000000000000000000191660a060020a835b0217905550565b600190565b60035463010000009004600160a060020a0316331461042157600080fd5b600160045460a060020a900460ff16600381111561043b57fe5b1461044557600080fd5b6004547501000000000000000000000000000000000000000000900460ff161561046e57600080fd5b6004805475ff00000000000000000000000000000000000000000019167501000000000000000000000000000000000000000000179055565b6104b0336106f1565b15156104bb57600080fd5b600060045460a060020a900460ff1660038111156104d557fe5b146104df57600080fd5b60048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152309381019390935251610590928492600160a060020a0316916370a08231916024808201926020929091908290030181600087803b15801561054b57600080fd5b505af115801561055f573d6000803e3d6000fd5b505050506040513d602081101561057557600080fd5b5051600454600160a060020a0316919063ffffffff610bc816565b50565b61059c33610730565b15156105a757600080fd5b61059081610c80565b6105b9336106f1565b15156105c457600080fd5b61059081610c91565b60006105df818363ffffffff610ca216565b92915050565b6105ee33610730565b15156105f957600080fd5b600360045460a060020a900460ff16600381111561061357fe5b141561061e57600080fd5b6004805474ff00000000000000000000000000000000000000001916740300000000000000000000000000000000000000001775ff000000000000000000000000000000000000000000191690556003805476ffffffffffffffffffffffffffffffffffffffff00000019169055565b61069733610730565b15156106a257600080fd5b600260045460a060020a900460ff1660038111156106bc57fe5b146106c657600080fd5b600480546001919074ff0000000000000000000000000000000000000000191660a060020a836103f7565b60006105df60018363ffffffff610ca216565b61070d336105cd565b151561071857600080fd5b61059081610cd9565b60035462010000900460ff1690565b60006105df60028363ffffffff610ca216565b600061074e336105cd565b151561075957600080fd5b600160045460a060020a900460ff16600381111561077357fe5b1461077d57600080fd5b6004547501000000000000000000000000000000000000000000900460ff1615156107a757600080fd5b60045460b860020a900461ffff16151561081d576004805478ffff00000000000000000000000000000000000000000000001976ff00000000000000000000000000000000000Line truncated
|
||||
60806040523480156200001157600080fd5b506040516080806200104f83398101604090815281516020830151918301516060909301519092906200004d3364010000000062000103810204565b620000613364010000000062000121810204565b62000075336401000000006200013c810204565b60008360ff16101580156200008e575060058360ff1611155b15156200009a57600080fd5b6003805461ffff191661ffff959095169490941762ff000019166201000060ff949094169390930292909217630100000060b860020a0319166301000000600160a060020a03928316021790925560048054600160a060020a03191691909216179055620001ea565b6200011e60008264010000000062000d8f6200015782021704565b50565b6200011e60018264010000000062000d8f6200015782021704565b6200011e60028264010000000062000d8f6200015782021704565b600160a060020a03811615156200016d57600080fd5b620001828282640100000000620001b2810204565b156200018d57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a0382161515620001ca57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610e5580620001fa6000396000f30060806040526004361061013d5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663162f986d81146101425780631777fb4b1461015957806319a74ab31461018257806321b79d9814610197578063231d4e2a146101ac57806329d10b6e146101cd5780632e6b6849146101ee578063302c11ca1461020f57806334cdcf2614610240578063363aa6c714610261578063427534a414610276578063608d3d3d1461028b57806374be7592146102ac57806380258e47146102cd57806381a24459146102f857806399f4b251146103195780639e614ca01461032e578063ada436e914610343578063b2a32cd514610364578063be95249414610379578063c6846ef81461038e578063d43acc79146103b5578063da408679146103ca578063e9d61859146103df575b600080fd5b34801561014e57600080fd5b506101576103f4565b005b34801561016557600080fd5b5061016e61045a565b604080519115158252519081900360200190f35b34801561018e57600080fd5b5061016e61045f565b3480156101a357600080fd5b50610157610496565b3480156101b857600080fd5b50610157600160a060020a0360043516610516565b3480156101d957600080fd5b50610157600160a060020a0360043516610602565b3480156101fa57600080fd5b50610157600160a060020a036004351661061f565b34801561021b57600080fd5b5061022461063c565b60408051600160a060020a039092168252519081900360200190f35b34801561024c57600080fd5b5061016e600160a060020a0360043516610652565b34801561026d57600080fd5b5061015761066a565b34801561028257600080fd5b50610157610713565b34801561029757600080fd5b5061016e600160a060020a0360043516610776565b3480156102b857600080fd5b50610157600160a060020a0360043516610789565b3480156102d957600080fd5b506102e26107a6565b6040805160ff9092168252519081900360200190f35b34801561030457600080fd5b5061016e600160a060020a03600435166107b5565b34801561032557600080fd5b506101576107c8565b34801561033a57600080fd5b50610157610999565b34801561034f57600080fd5b50610157600160a060020a03600435166109f3565b34801561037057600080fd5b50610157610a89565b34801561038557600080fd5b50610157610b9c565b34801561039a57600080fd5b506103a3610ba7565b60408051918252519081900360200190f35b3480156103c157600080fd5b50610157610bad565b3480156103d657600080fd5b50610157610bb6565b3480156103eb57600080fd5b50610157610c31565b6103fd336107b5565b151561040857600080fd5b600160045460a060020a900460ff16600381111561042257fe5b1461042c57600080fd5b600480546002919074ff0000000000000000000000000000000000000000191660a060020a835b0217905550565b600190565b6000600160045460a060020a900460ff16600381111561047b57fe5b148015610491575060045460a860020a900460ff165b905090565b60035463010000009004600160a060020a031633146104b457600080fd5b600160045460a060020a900460ff1660038111156104ce57fe5b146104d857600080fd5b60045460a860020a900460ff16156104ef57600080fd5b6004805475ff000000000000000000000000000000000000000000191660a860020a179055565b61051f33610776565b151561052a57600080fd5b600060045460a060020a900460ff16600381111561054457fe5b1461054e57600080fd5b60048054604080517f70a082310000000000000000000000000000000000000000000000000000000081523093810193909352516105ff928492600160a060020a0316916370a08231916024808201926020929091908290030181600087803b1580156105ba57600080fd5b505af11580156105ce573d6000803e3d6000fd5b505050506040513d60208110156105e457600080fd5b5051600454600160a060020a0316919063ffffffff610c3a16565b50565b61060b336107b5565b151561061657600080fd5b6105ff81610cf2565b61062833610776565b151561063357600080fd5b6105ff81610d03565b60035463010000009004600160a060020a031690565b6000610664818363ffffffff610d1416565b92915050565b610673336107b5565b151561067e57600080fd5b600360045460a060020a900460ff16600381111561069857fe5b14156106a357600080fd5b6004805474ff00000000000000000000000000000000000000001916740300000000000000000000000000000000000000001775ff000000000000000000000000000000000000000000191690556003805476ffffffffffffffffffffffffffffffffffffffff00000019169055565b61071c336107b5565b151561072757600080fd5b600260045460a060020a900460ff16600381111561074157fe5b1461074b57600080fd5b600480546001919074ff0000000000000000000000000000000000000000191660a060020a83610453565b600061066460018363ffffffff610d1416565b61079233610652565b151561079d57600080fd5b6105ff81610d4b565b60035462010000900460ff1690565b600061066460028363ffffffff610d1416565b6Line truncated
|
||||
+38
-6
@@ -23,6 +23,20 @@
|
||||
"stateMutability": "pure",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": true,
|
||||
"inputs": [],
|
||||
"name": "isMining",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "",
|
||||
"type": "bool"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": false,
|
||||
"inputs": [],
|
||||
@@ -74,6 +88,20 @@
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": true,
|
||||
"inputs": [],
|
||||
"name": "getMiner",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": true,
|
||||
"inputs": [
|
||||
@@ -292,7 +320,7 @@
|
||||
"type": "constructor"
|
||||
}
|
||||
],
|
||||
"bytecode": "60806040523480156200001157600080fd5b5060405160808062000fb883398101604090815281516020830151918301516060909301519092906200004d33640100000000620000de810204565b6200006133640100000000620000fc810204565b620000753364010000000062000117810204565b6003805461ffff191661ffff959095169490941762ff000019166201000060ff949094169390930292909217630100000060b860020a0319166301000000600160a060020a03928316021790925560048054600160a060020a03191691909216179055620001c5565b620000f960008264010000000062000d1d6200013282021704565b50565b620000f960018264010000000062000d1d6200013282021704565b620000f960028264010000000062000d1d6200013282021704565b600160a060020a03811615156200014857600080fd5b6200015d82826401000000006200018d810204565b156200016857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a0382161515620001a557600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610de380620001d56000396000f3006080604052600436106101275763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663162f986d811461012c5780631777fb4b1461014357806321b79d981461016c578063231d4e2a1461018157806329d10b6e146101a25780632e6b6849146101c357806334cdcf26146101e4578063363aa6c714610205578063427534a41461021a578063608d3d3d1461022f57806374be75921461025057806380258e471461027157806381a244591461029c57806399f4b251146102bd5780639e614ca0146102d2578063ada436e9146102e7578063b2a32cd514610308578063be9524941461031d578063c6846ef814610332578063d43acc7914610359578063da4086791461036e578063e9d6185914610383575b600080fd5b34801561013857600080fd5b50610141610398565b005b34801561014f57600080fd5b506101586103fe565b604080519115158252519081900360200190f35b34801561017857600080fd5b50610141610403565b34801561018d57600080fd5b50610141600160a060020a03600435166104a7565b3480156101ae57600080fd5b50610141600160a060020a0360043516610593565b3480156101cf57600080fd5b50610141600160a060020a03600435166105b0565b3480156101f057600080fd5b50610158600160a060020a03600435166105cd565b34801561021157600080fd5b506101416105e5565b34801561022657600080fd5b5061014161068e565b34801561023b57600080fd5b50610158600160a060020a03600435166106f1565b34801561025c57600080fd5b50610141600160a060020a0360043516610704565b34801561027d57600080fd5b50610286610721565b6040805160ff9092168252519081900360200190f35b3480156102a857600080fd5b50610158600160a060020a0360043516610730565b3480156102c957600080fd5b50610141610743565b3480156102de57600080fd5b50610141610915565b3480156102f357600080fd5b50610141600160a060020a036004351661096f565b34801561031457600080fd5b50610141610a05565b34801561032957600080fd5b50610141610b18565b34801561033e57600080fd5b50610347610b23565b60408051918252519081900360200190f35b34801561036557600080fd5b50610141610b29565b34801561037a57600080fd5b50610141610b32565b34801561038f57600080fd5b50610141610bbf565b6103a133610730565b15156103ac57600080fd5b600160045460a060020a900460ff1660038111156103c657fe5b146103d057600080fd5b600480546002919074ff0000000000000000000000000000000000000000191660a060020a835b0217905550565b600190565b60035463010000009004600160a060020a0316331461042157600080fd5b600160045460a060020a900460ff16600381111561043b57fe5b1461044557600080fd5b6004547501000000000000000000000000000000000000000000900460ff161561046e57600080fd5b6004805475ff00000000000000000000000000000000000000000019167501000000000000000000000000000000000000000000179055565b6104b0336106f1565b15156104bb57600080fd5b600060045460a060020a900460ff1660038111156104d557fe5b146104df57600080fd5b60048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152309381019390935251610590928492600160a060020a0316916370a08231916024808201926020929091908290030181600087803b15801561054b57600080fd5b505af115801561055f573d6000803e3d6000fd5b505050506040513d602081101561057557600080fd5b5051600454600160a060020a0316919063ffffffff610bc816565b50565b61059c33610730565b15156105a757600080fd5b61059081610c80565b6105b9336106f1565b15156105c457600080fd5b61059081610c91565b60006105df818363ffffffff610ca216565b92915050565b6105ee33610730565b15156105f957600080fd5b600360045460a060020a900460ff16600381111561061357fe5b141561061e57600080fd5b6004805474ff00000000000000000000000000000000000000001916740300000000000000000000000000000000000000001775ff000000000000000000000000000000000000000000191690556003805476ffffffffffffffffffffffffffffffffffffffff00000019169055565b61069733610730565b15156106a257600080fd5b600260045460a060020a900460ff1660038111156106bc57fe5b146106c657600080fd5b600480546001919074ff0000000000000000000000000000000000000000191660a060020a836103f7565b60006105df60018363ffffffff610ca216565b61070d336105cd565b151561071857600080fd5b61059081610cd9565b60035462010000900460ff1690565b60006105df60028363ffffffff610ca216565b600061074e336105cd565b151561075957600080fd5b600160045460a060020a900460ff16600381111561077357fe5b1461077d57600080fd5b6004547501000000000000000000000000000000000000000000900460ff1615156107a757600080fd5b60045460b860020a900461ffff16151561081d576004805478ffff00000000000000000000000000000000000000000000001976ff000000000000000000Line truncated
|
||||
"bytecode": "60806040523480156200001157600080fd5b506040516080806200104f83398101604090815281516020830151918301516060909301519092906200004d3364010000000062000103810204565b620000613364010000000062000121810204565b62000075336401000000006200013c810204565b60008360ff16101580156200008e575060058360ff1611155b15156200009a57600080fd5b6003805461ffff191661ffff959095169490941762ff000019166201000060ff949094169390930292909217630100000060b860020a0319166301000000600160a060020a03928316021790925560048054600160a060020a03191691909216179055620001ea565b6200011e60008264010000000062000d8f6200015782021704565b50565b6200011e60018264010000000062000d8f6200015782021704565b6200011e60028264010000000062000d8f6200015782021704565b600160a060020a03811615156200016d57600080fd5b620001828282640100000000620001b2810204565b156200018d57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a0382161515620001ca57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610e5580620001fa6000396000f30060806040526004361061013d5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663162f986d81146101425780631777fb4b1461015957806319a74ab31461018257806321b79d9814610197578063231d4e2a146101ac57806329d10b6e146101cd5780632e6b6849146101ee578063302c11ca1461020f57806334cdcf2614610240578063363aa6c714610261578063427534a414610276578063608d3d3d1461028b57806374be7592146102ac57806380258e47146102cd57806381a24459146102f857806399f4b251146103195780639e614ca01461032e578063ada436e914610343578063b2a32cd514610364578063be95249414610379578063c6846ef81461038e578063d43acc79146103b5578063da408679146103ca578063e9d61859146103df575b600080fd5b34801561014e57600080fd5b506101576103f4565b005b34801561016557600080fd5b5061016e61045a565b604080519115158252519081900360200190f35b34801561018e57600080fd5b5061016e61045f565b3480156101a357600080fd5b50610157610496565b3480156101b857600080fd5b50610157600160a060020a0360043516610516565b3480156101d957600080fd5b50610157600160a060020a0360043516610602565b3480156101fa57600080fd5b50610157600160a060020a036004351661061f565b34801561021b57600080fd5b5061022461063c565b60408051600160a060020a039092168252519081900360200190f35b34801561024c57600080fd5b5061016e600160a060020a0360043516610652565b34801561026d57600080fd5b5061015761066a565b34801561028257600080fd5b50610157610713565b34801561029757600080fd5b5061016e600160a060020a0360043516610776565b3480156102b857600080fd5b50610157600160a060020a0360043516610789565b3480156102d957600080fd5b506102e26107a6565b6040805160ff9092168252519081900360200190f35b34801561030457600080fd5b5061016e600160a060020a03600435166107b5565b34801561032557600080fd5b506101576107c8565b34801561033a57600080fd5b50610157610999565b34801561034f57600080fd5b50610157600160a060020a03600435166109f3565b34801561037057600080fd5b50610157610a89565b34801561038557600080fd5b50610157610b9c565b34801561039a57600080fd5b506103a3610ba7565b60408051918252519081900360200190f35b3480156103c157600080fd5b50610157610bad565b3480156103d657600080fd5b50610157610bb6565b3480156103eb57600080fd5b50610157610c31565b6103fd336107b5565b151561040857600080fd5b600160045460a060020a900460ff16600381111561042257fe5b1461042c57600080fd5b600480546002919074ff0000000000000000000000000000000000000000191660a060020a835b0217905550565b600190565b6000600160045460a060020a900460ff16600381111561047b57fe5b148015610491575060045460a860020a900460ff165b905090565b60035463010000009004600160a060020a031633146104b457600080fd5b600160045460a060020a900460ff1660038111156104ce57fe5b146104d857600080fd5b60045460a860020a900460ff16156104ef57600080fd5b6004805475ff000000000000000000000000000000000000000000191660a860020a179055565b61051f33610776565b151561052a57600080fd5b600060045460a060020a900460ff16600381111561054457fe5b1461054e57600080fd5b60048054604080517f70a082310000000000000000000000000000000000000000000000000000000081523093810193909352516105ff928492600160a060020a0316916370a08231916024808201926020929091908290030181600087803b1580156105ba57600080fd5b505af11580156105ce573d6000803e3d6000fd5b505050506040513d60208110156105e457600080fd5b5051600454600160a060020a0316919063ffffffff610c3a16565b50565b61060b336107b5565b151561061657600080fd5b6105ff81610cf2565b61062833610776565b151561063357600080fd5b6105ff81610d03565b60035463010000009004600160a060020a031690565b6000610664818363ffffffff610d1416565b92915050565b610673336107b5565b151561067e57600080fd5b600360045460a060020a900460ff16600381111561069857fe5b14156106a357600080fd5b6004805474ff00000000000000000000000000000000000000001916740300000000000000000000000000000000000000001775ff000000000000000000000000000000000000000000191690556003805476ffffffffffffffffffffffffffffffffffffffff00000019169055565b61071c336107b5565b151561072757600080fd5b600260045460a060020a900460ff16600381111561074157fe5b1461074b57600080fd5b600480546001919074ff0000000000000000000000000000000000000000191660a060020a83610453565b600061066460018363ffffffff610d1416565b61079233610652565b151561079d57600080fd5b6105ff81610d4b565b60035462010000900460ff1690565b600061066460028363ffffLine truncated
|
||||
"functionHashes": {
|
||||
"DAYS_PER_YEAR()": "c6846ef8",
|
||||
"activateMiner()": "b2a32cd5",
|
||||
@@ -301,8 +329,10 @@
|
||||
"addSystem(address)": "74be7592",
|
||||
"deactivateMiner()": "9e614ca0",
|
||||
"getCategory()": "80258e47",
|
||||
"getMiner()": "302c11ca",
|
||||
"isAlgoMiner()": "1777fb4b",
|
||||
"isCoreTeam(address)": "608d3d3d",
|
||||
"isMining()": "19a74ab3",
|
||||
"isSupervisor(address)": "81a24459",
|
||||
"isSystem(address)": "34cdcf26",
|
||||
"migrateMiner(address)": "231d4e2a",
|
||||
@@ -319,20 +349,22 @@
|
||||
},
|
||||
"gasEstimates": {
|
||||
"creation": {
|
||||
"codeDepositCost": "711000",
|
||||
"codeDepositCost": "733800",
|
||||
"executionCost": "infinite",
|
||||
"totalCost": "infinite"
|
||||
},
|
||||
"external": {
|
||||
"DAYS_PER_YEAR()": "580",
|
||||
"DAYS_PER_YEAR()": "624",
|
||||
"activateMiner()": "infinite",
|
||||
"addCoreTeam(address)": "infinite",
|
||||
"addSupervisor(address)": "infinite",
|
||||
"addSystem(address)": "infinite",
|
||||
"deactivateMiner()": "infinite",
|
||||
"getCategory()": "652",
|
||||
"getCategory()": "696",
|
||||
"getMiner()": "702",
|
||||
"isAlgoMiner()": "212",
|
||||
"isCoreTeam(address)": "infinite",
|
||||
"isMining()": "859",
|
||||
"isSupervisor(address)": "infinite",
|
||||
"isSystem(address)": "infinite",
|
||||
"migrateMiner(address)": "infinite",
|
||||
@@ -343,9 +375,9 @@
|
||||
"renounceSystem()": "infinite",
|
||||
"resetMiner(address)": "infinite",
|
||||
"resumeMining()": "infinite",
|
||||
"startMining()": "21272",
|
||||
"startMining()": "21420",
|
||||
"stopAndRemoveOwnership()": "infinite",
|
||||
"stopMining()": "21665"
|
||||
"stopMining()": "21772"
|
||||
}
|
||||
}
|
||||
}
|
||||
+1337
-1114
File diff suppressed because it is too large.
Load diff
+1
-1
@@ -1 +1 @@
|
||||
608060405234801561001057600080fd5b5060405160408061076083398101604052805160209091015161003b33640100000000610077810204565b60018054600160a060020a0390921662010000026201000060b060020a031961ffff90941661ffff199093169290921792909216179055610120565b61008f60008264010000000061056b61009282021704565b50565b600160a060020a03811615156100a757600080fd5b6100ba82826401000000006100e9810204565b156100c457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561010057600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106318061012f6000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632296f4c7811461009a57806325109e8b146100bd5780632e6b6849146100e4578063455acbcd14610105578063492fba841461011a57806349dc9ed01461012f578063608d3d3d146101445780639fc3c98314610179578063a89febb21461018e578063aed6183f146101a3578063d43acc79146101b8575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a03600435166101cd565b005b3480156100c957600080fd5b506100d26103cc565b60408051918252519081900360200190f35b3480156100f057600080fd5b506100bb600160a060020a03600435166103d8565b34801561011157600080fd5b506100d26103f8565b34801561012657600080fd5b506100d2610407565b34801561013b57600080fd5b506100d2610415565b34801561015057600080fd5b50610165600160a060020a0360043516610424565b604080519115158252519081900360200190f35b34801561018557600080fd5b506100d261043c565b34801561019a57600080fd5b506100d261044a565b3480156101af57600080fd5b506100d2610459565b3480156101c457600080fd5b506100bb610468565b60008060006101db33610424565b15156101e657600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561022757600080fd5b505af115801561023b573d6000803e3d6000fd5b505050506040513d602081101561025157600080fd5b5051151561025e57600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561029c57600080fd5b505af11580156102b0573d6000803e3d6000fd5b505050506040513d60208110156102c657600080fd5b50519150600060ff8316108015906102e2575060058260ff1611155b15156102ed57600080fd5b50600060ff8216151561030b575069152d02c7e14af680000061039c565b8160ff1660011415610328575069d3c21bcecceda100000061039c565b8160ff166002141561034657506a01a784379d99db4200000061039c565b8160ff166003141561036457506a027b46536c66c8e300000061039c565b8160ff166004141561038257506a034f086f3b33b68400000061039c565b8160ff166005141561039c57506a0422ca8b0a00a4250000005b600081116103a957600080fd5b6001546103c690620100009004600160a060020a03168583610473565b50505050565b670de0b6b3a764000081565b6103e133610424565b15156103ec57600080fd5b6103f581610512565b50565b6a034f086f3b33b68400000081565b69d3c21bcecceda100000081565b6a027b46536c66c8e300000081565b6000610436818363ffffffff61052316565b92915050565b69152d02c7e14af680000081565b6a0422ca8b0a00a42500000081565b6a01a784379d99db4200000081565b6104713361055a565b565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1580156104d657600080fd5b505af11580156104ea573d6000803e3d6000fd5b505050506040513d602081101561050057600080fd5b5051151561050d57600080fd5b505050565b6103f560008263ffffffff61056b16565b6000600160a060020a038216151561053a57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6103f560008263ffffffff6105b916565b600160a060020a038116151561058057600080fd5b61058a8282610523565b1561059457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a03811615156105ce57600080fd5b6105d88282610523565b15156105e357600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820fcd1665b524606952d86f870d91a6ad5ceaed631661ee3cc8731e992b464993a0029
|
||||
608060405234801561001057600080fd5b506040516040806107aa83398101604052805160209091015161003b33640100000000610077810204565b60018054600160a060020a0390921662010000026201000060b060020a031961ffff90941661ffff199093169290921792909216179055610120565b61008f6000826401000000006105b561009282021704565b50565b600160a060020a03811615156100a757600080fd5b6100ba82826401000000006100e9810204565b156100c457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561010057600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61067b8061012f6000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632296f4c7811461009a57806325109e8b146100bd5780632e6b6849146100e4578063455acbcd14610105578063492fba841461011a57806349dc9ed01461012f578063608d3d3d146101445780639fc3c98314610179578063a89febb21461018e578063aed6183f146101a3578063d43acc79146101b8575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a03600435166101cd565b005b3480156100c957600080fd5b506100d2610416565b60408051918252519081900360200190f35b3480156100f057600080fd5b506100bb600160a060020a0360043516610422565b34801561011157600080fd5b506100d2610442565b34801561012657600080fd5b506100d2610451565b34801561013b57600080fd5b506100d261045f565b34801561015057600080fd5b50610165600160a060020a036004351661046e565b604080519115158252519081900360200190f35b34801561018557600080fd5b506100d2610486565b34801561019a57600080fd5b506100d2610494565b3480156101af57600080fd5b506100d26104a3565b3480156101c457600080fd5b506100bb6104b2565b60008060006101db3361046e565b15156101e657600080fd5b600160a060020a03841660009081526002602052604090205460ff161561020c57600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561024d57600080fd5b505af1158015610261573d6000803e3d6000fd5b505050506040513d602081101561027757600080fd5b5051151561028457600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156102c257600080fd5b505af11580156102d6573d6000803e3d6000fd5b505050506040513d60208110156102ec57600080fd5b50519150600060ff831610801590610308575060058260ff1611155b151561031357600080fd5b50600060ff82161515610331575069152d02c7e14af68000006103c2565b8160ff166001141561034e575069d3c21bcecceda10000006103c2565b8160ff166002141561036c57506a01a784379d99db420000006103c2565b8160ff166003141561038a57506a027b46536c66c8e30000006103c2565b8160ff16600414156103a857506a034f086f3b33b6840000006103c2565b8160ff16600514156103c257506a0422ca8b0a00a4250000005b600081116103cf57600080fd5b600160a060020a038085166000908152600260205260409020805460ff1916600190811790915554610410916201000090910416858363ffffffff6104bd16565b50505050565b670de0b6b3a764000081565b61042b3361046e565b151561043657600080fd5b61043f8161055c565b50565b6a034f086f3b33b68400000081565b69d3c21bcecceda100000081565b6a027b46536c66c8e300000081565b6000610480818363ffffffff61056d16565b92915050565b69152d02c7e14af680000081565b6a0422ca8b0a00a42500000081565b6a01a784379d99db4200000081565b6104bb336105a4565b565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561052057600080fd5b505af1158015610534573d6000803e3d6000fd5b505050506040513d602081101561054a57600080fd5b5051151561055757600080fd5b505050565b61043f60008263ffffffff6105b516565b6000600160a060020a038216151561058457600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61043f60008263ffffffff61060316565b600160a060020a03811615156105ca57600080fd5b6105d4828261056d565b156105de57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561061857600080fd5b610622828261056d565b151561062d57600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058200648204d7a0ac13aa2e9ab7514200c49dd33ae54f0178fd146385ad3444f20ee0029
|
||||
+2
-2
@@ -170,7 +170,7 @@
|
||||
"type": "constructor"
|
||||
}
|
||||
],
|
||||
"bytecode": "608060405234801561001057600080fd5b5060405160408061076083398101604052805160209091015161003b33640100000000610077810204565b60018054600160a060020a0390921662010000026201000060b060020a031961ffff90941661ffff199093169290921792909216179055610120565b61008f60008264010000000061056b61009282021704565b50565b600160a060020a03811615156100a757600080fd5b6100ba82826401000000006100e9810204565b156100c457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561010057600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6106318061012f6000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632296f4c7811461009a57806325109e8b146100bd5780632e6b6849146100e4578063455acbcd14610105578063492fba841461011a57806349dc9ed01461012f578063608d3d3d146101445780639fc3c98314610179578063a89febb21461018e578063aed6183f146101a3578063d43acc79146101b8575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a03600435166101cd565b005b3480156100c957600080fd5b506100d26103cc565b60408051918252519081900360200190f35b3480156100f057600080fd5b506100bb600160a060020a03600435166103d8565b34801561011157600080fd5b506100d26103f8565b34801561012657600080fd5b506100d2610407565b34801561013b57600080fd5b506100d2610415565b34801561015057600080fd5b50610165600160a060020a0360043516610424565b604080519115158252519081900360200190f35b34801561018557600080fd5b506100d261043c565b34801561019a57600080fd5b506100d261044a565b3480156101af57600080fd5b506100d2610459565b3480156101c457600080fd5b506100bb610468565b60008060006101db33610424565b15156101e657600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561022757600080fd5b505af115801561023b573d6000803e3d6000fd5b505050506040513d602081101561025157600080fd5b5051151561025e57600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561029c57600080fd5b505af11580156102b0573d6000803e3d6000fd5b505050506040513d60208110156102c657600080fd5b50519150600060ff8316108015906102e2575060058260ff1611155b15156102ed57600080fd5b50600060ff8216151561030b575069152d02c7e14af680000061039c565b8160ff1660011415610328575069d3c21bcecceda100000061039c565b8160ff166002141561034657506a01a784379d99db4200000061039c565b8160ff166003141561036457506a027b46536c66c8e300000061039c565b8160ff166004141561038257506a034f086f3b33b68400000061039c565b8160ff166005141561039c57506a0422ca8b0a00a4250000005b600081116103a957600080fd5b6001546103c690620100009004600160a060020a03168583610473565b50505050565b670de0b6b3a764000081565b6103e133610424565b15156103ec57600080fd5b6103f581610512565b50565b6a034f086f3b33b68400000081565b69d3c21bcecceda100000081565b6a027b46536c66c8e300000081565b6000610436818363ffffffff61052316565b92915050565b69152d02c7e14af680000081565b6a0422ca8b0a00a42500000081565b6a01a784379d99db4200000081565b6104713361055a565b565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1580156104d657600080fd5b505af11580156104ea573d6000803e3d6000fd5b505050506040513d602081101561050057600080fd5b5051151561050d57600080fd5b505050565b6103f560008263ffffffff61056b16565b6000600160a060020a038216151561053a57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6103f560008263ffffffff6105b916565b600160a060020a038116151561058057600080fd5b61058a8282610523565b1561059457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a03811615156105ce57600080fd5b6105d88282610523565b15156105e357600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a72305820fcd1665b524606952d86f870d91a6ad5ceaed631661ee3cc8731e992b464993a0029",
|
||||
"bytecode": "608060405234801561001057600080fd5b506040516040806107aa83398101604052805160209091015161003b33640100000000610077810204565b60018054600160a060020a0390921662010000026201000060b060020a031961ffff90941661ffff199093169290921792909216179055610120565b61008f6000826401000000006105b561009282021704565b50565b600160a060020a03811615156100a757600080fd5b6100ba82826401000000006100e9810204565b156100c457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561010057600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61067b8061012f6000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632296f4c7811461009a57806325109e8b146100bd5780632e6b6849146100e4578063455acbcd14610105578063492fba841461011a57806349dc9ed01461012f578063608d3d3d146101445780639fc3c98314610179578063a89febb21461018e578063aed6183f146101a3578063d43acc79146101b8575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a03600435166101cd565b005b3480156100c957600080fd5b506100d2610416565b60408051918252519081900360200190f35b3480156100f057600080fd5b506100bb600160a060020a0360043516610422565b34801561011157600080fd5b506100d2610442565b34801561012657600080fd5b506100d2610451565b34801561013b57600080fd5b506100d261045f565b34801561015057600080fd5b50610165600160a060020a036004351661046e565b604080519115158252519081900360200190f35b34801561018557600080fd5b506100d2610486565b34801561019a57600080fd5b506100d2610494565b3480156101af57600080fd5b506100d26104a3565b3480156101c457600080fd5b506100bb6104b2565b60008060006101db3361046e565b15156101e657600080fd5b600160a060020a03841660009081526002602052604090205460ff161561020c57600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561024d57600080fd5b505af1158015610261573d6000803e3d6000fd5b505050506040513d602081101561027757600080fd5b5051151561028457600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156102c257600080fd5b505af11580156102d6573d6000803e3d6000fd5b505050506040513d60208110156102ec57600080fd5b50519150600060ff831610801590610308575060058260ff1611155b151561031357600080fd5b50600060ff82161515610331575069152d02c7e14af68000006103c2565b8160ff166001141561034e575069d3c21bcecceda10000006103c2565b8160ff166002141561036c57506a01a784379d99db420000006103c2565b8160ff166003141561038a57506a027b46536c66c8e30000006103c2565b8160ff16600414156103a857506a034f086f3b33b6840000006103c2565b8160ff16600514156103c257506a0422ca8b0a00a4250000005b600081116103cf57600080fd5b600160a060020a038085166000908152600260205260409020805460ff1916600190811790915554610410916201000090910416858363ffffffff6104bd16565b50505050565b670de0b6b3a764000081565b61042b3361046e565b151561043657600080fd5b61043f8161055c565b50565b6a034f086f3b33b68400000081565b69d3c21bcecceda100000081565b6a027b46536c66c8e300000081565b6000610480818363ffffffff61056d16565b92915050565b69152d02c7e14af680000081565b6a0422ca8b0a00a42500000081565b6a01a784379d99db4200000081565b6104bb336105a4565b565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561052057600080fd5b505af1158015610534573d6000803e3d6000fd5b505050506040513d602081101561054a57600080fd5b5051151561055757600080fd5b505050565b61043f60008263ffffffff6105b516565b6000600160a060020a038216151561058457600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61043f60008263ffffffff61060316565b600160a060020a03811615156105ca57600080fd5b6105d4828261056d565b156105de57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561061857600080fd5b610622828261056d565b151561062d57600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058200648204d7a0ac13aa2e9ab7514200c49dd33ae54f0178fd146385ad3444f20ee0029",
|
||||
"functionHashes": {
|
||||
"CAT_0_VALUE()": "9fc3c983",
|
||||
"CAT_1_VALUE()": "492fba84",
|
||||
@@ -186,7 +186,7 @@
|
||||
},
|
||||
"gasEstimates": {
|
||||
"creation": {
|
||||
"codeDepositCost": "317000",
|
||||
"codeDepositCost": "331800",
|
||||
"executionCost": "infinite",
|
||||
"totalCost": "infinite"
|
||||
},
|
||||
|
||||
+180
@@ -0,0 +1,180 @@
|
||||
using System;
|
||||
using System.Numerics;
|
||||
using System.Threading.Tasks;
|
||||
using AdvancedAlgos.AlgoToken.AlgoErc20Token;
|
||||
using AdvancedAlgos.AlgoToken.Framework.Ethereum;
|
||||
using AdvancedAlgos.AlgoToken.Framework.Ethereum.Exceptions;
|
||||
using AdvancedAlgos.AlgoToken.Framework.Ethereum.IntegrationTest;
|
||||
using Nethereum.RPC.Accounts;
|
||||
using Nethereum.Web3;
|
||||
using Nethereum.Web3.Accounts;
|
||||
using Xunit;
|
||||
|
||||
namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests
|
||||
{
|
||||
public class AlgoFeesTests
|
||||
{
|
||||
[Fact]
|
||||
public async Task MinerRegistrationTest()
|
||||
{
|
||||
EthNetwork.UseGanacheTestNet();
|
||||
|
||||
var prefundedAccount = new Account(EthNetwork.Instance.PrefundedPrivateKey);
|
||||
|
||||
var tokenOwnerAccount = EthAccountFactory.Create();
|
||||
var coreTeamAccount = EthAccountFactory.Create();
|
||||
|
||||
await EthNetwork.Instance.RefillAsync(tokenOwnerAccount);
|
||||
await EthNetwork.Instance.RefillAsync(coreTeamAccount);
|
||||
|
||||
// Create the ERC20 token...
|
||||
var token = new AlgoTokenV1(EthNetwork.Instance.GetWeb3(tokenOwnerAccount), EthNetwork.Instance.GasPriceProvider);
|
||||
await token.DeployAsync();
|
||||
|
||||
// Create a fees...
|
||||
var fees1 = new AlgoFees(EthNetwork.Instance.GetWeb3(coreTeamAccount), EthNetwork.Instance.GasPriceProvider);
|
||||
await fees1.DeployAsync(token.ContractAddress);
|
||||
|
||||
// Create some miners...
|
||||
var minerAccounts = new IAccount[3];
|
||||
AlgoMiner[] miners = new AlgoMiner[3];
|
||||
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
// Create an account for the miner...
|
||||
minerAccounts[i] = EthAccountFactory.Create();
|
||||
|
||||
// Create the miner...
|
||||
miners[i] = new AlgoMiner(EthNetwork.Instance.GetWeb3(coreTeamAccount), EthNetwork.Instance.GasPriceProvider);
|
||||
await miners[i].DeployAsync(1, 2, minerAccounts[i].Address, token.ContractAddress);
|
||||
}
|
||||
|
||||
// Register a miner...
|
||||
await fees1.RegisterMinerAsync(miners[0].ContractAddress);
|
||||
|
||||
Assert.Equal(1, await fees1.GetMinerCountAsync());
|
||||
Assert.Equal(miners[0].ContractAddress, await fees1.GetMinerByIndexAsync(0));
|
||||
|
||||
// Remove the only registered miner.
|
||||
await fees1.UnregisterMinerAsync(miners[0].ContractAddress);
|
||||
|
||||
Assert.Equal(0, await fees1.GetMinerCountAsync());
|
||||
|
||||
// Register the 3 miners and ensure they are registered...
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
await fees1.RegisterMinerAsync(miners[i].ContractAddress);
|
||||
}
|
||||
|
||||
Assert.Equal(3, await fees1.GetMinerCountAsync());
|
||||
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
Assert.Equal(miners[i].ContractAddress, await fees1.GetMinerByIndexAsync(i));
|
||||
}
|
||||
|
||||
// Remove the 2nd miner and check...
|
||||
await fees1.UnregisterMinerAsync(miners[1].ContractAddress);
|
||||
|
||||
Assert.Equal(2, await fees1.GetMinerCountAsync());
|
||||
Assert.Equal(miners[0].ContractAddress, await fees1.GetMinerByIndexAsync(0));
|
||||
Assert.Equal(miners[2].ContractAddress, await fees1.GetMinerByIndexAsync(1));
|
||||
|
||||
// Add the removed miner back...
|
||||
await fees1.RegisterMinerAsync(miners[1].ContractAddress);
|
||||
|
||||
Assert.Equal(3, await fees1.GetMinerCountAsync());
|
||||
Assert.Equal(miners[0].ContractAddress, await fees1.GetMinerByIndexAsync(0));
|
||||
Assert.Equal(miners[2].ContractAddress, await fees1.GetMinerByIndexAsync(1));
|
||||
Assert.Equal(miners[1].ContractAddress, await fees1.GetMinerByIndexAsync(2));
|
||||
|
||||
// Remove the latest miner...
|
||||
await fees1.UnregisterMinerAsync(miners[1].ContractAddress);
|
||||
|
||||
Assert.Equal(2, await fees1.GetMinerCountAsync());
|
||||
Assert.Equal(miners[0].ContractAddress, await fees1.GetMinerByIndexAsync(0));
|
||||
Assert.Equal(miners[2].ContractAddress, await fees1.GetMinerByIndexAsync(1));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task MineTest()
|
||||
{
|
||||
EthNetwork.UseGanacheTestNet();
|
||||
|
||||
var prefundedAccount = new Account(EthNetwork.Instance.PrefundedPrivateKey);
|
||||
|
||||
var tokenOwnerAccount = EthAccountFactory.Create();
|
||||
var systemAccount = EthAccountFactory.Create();
|
||||
var coreTeamAccount = EthAccountFactory.Create();
|
||||
|
||||
await EthNetwork.Instance.RefillAsync(tokenOwnerAccount);
|
||||
await EthNetwork.Instance.RefillAsync(systemAccount);
|
||||
await EthNetwork.Instance.RefillAsync(coreTeamAccount);
|
||||
|
||||
// Create the ERC20 token...
|
||||
var token = new AlgoTokenV1(EthNetwork.Instance.GetWeb3(tokenOwnerAccount), EthNetwork.Instance.GasPriceProvider);
|
||||
await token.DeployAsync();
|
||||
|
||||
// Create a fees...
|
||||
var fees1 = new AlgoFees(EthNetwork.Instance.GetWeb3(coreTeamAccount), EthNetwork.Instance.GasPriceProvider);
|
||||
await fees1.DeployAsync(token.ContractAddress);
|
||||
|
||||
// Register the system account...
|
||||
await fees1.AddSystemAsync(systemAccount.Address);
|
||||
|
||||
// Transfer some tokens to the fees...
|
||||
await token.TransferAsync(fees1.ContractAddress, 151.Algo());
|
||||
|
||||
// Create one miner per category...
|
||||
var minerAccounts = new IAccount[6];
|
||||
var miners = new AlgoMiner[6];
|
||||
|
||||
for (byte i = 0; i <= 5; i++)
|
||||
{
|
||||
// Create an account for the miner...
|
||||
minerAccounts[i] = EthAccountFactory.Create();
|
||||
await EthNetwork.Instance.RefillAsync(minerAccounts[i]);
|
||||
|
||||
// Create the miner...
|
||||
miners[i] = new AlgoMiner(EthNetwork.Instance.GetWeb3(coreTeamAccount), EthNetwork.Instance.GasPriceProvider);
|
||||
await miners[i].DeployAsync(1, i, minerAccounts[i].Address, token.ContractAddress);
|
||||
|
||||
// Transfer some tokens to the miner so it can be activated...
|
||||
await token.TransferAsync(miners[i].ContractAddress, 100.Algo());
|
||||
|
||||
// Activate the miner...
|
||||
await miners[i].ActivateMinerAsync();
|
||||
|
||||
// Start mining...
|
||||
{
|
||||
var miner = new AlgoMiner(miners[i].ContractAddress, EthNetwork.Instance.GetWeb3(minerAccounts[i]), EthNetwork.Instance.GasPriceProvider);
|
||||
await miner.StartMiningAsync();
|
||||
}
|
||||
|
||||
// Register a miner...
|
||||
await fees1.RegisterMinerAsync(miners[i].ContractAddress);
|
||||
}
|
||||
|
||||
// Mine the fees...
|
||||
{
|
||||
var fees = new AlgoFees(fees1.ContractAddress, EthNetwork.Instance.GetWeb3(systemAccount), EthNetwork.Instance.GasPriceProvider);
|
||||
await fees.MineAsync();
|
||||
}
|
||||
|
||||
// Ensure the miners received the payment from the fees...
|
||||
var balance0 = await token.BalanceOfAsync(minerAccounts[0].Address);
|
||||
var balance1 = await token.BalanceOfAsync(minerAccounts[1].Address);
|
||||
var balance2 = await token.BalanceOfAsync(minerAccounts[2].Address);
|
||||
var balance3 = await token.BalanceOfAsync(minerAccounts[3].Address);
|
||||
var balance4 = await token.BalanceOfAsync(minerAccounts[4].Address);
|
||||
var balance5 = await token.BalanceOfAsync(minerAccounts[5].Address);
|
||||
|
||||
Assert.Equal(1.Algo(), balance0);
|
||||
Assert.Equal(10.Algo(), balance1);
|
||||
Assert.Equal(20.Algo(), balance2);
|
||||
Assert.Equal(30.Algo(), balance3);
|
||||
Assert.Equal(40.Algo(), balance4);
|
||||
Assert.Equal(50.Algo(), balance5);
|
||||
}
|
||||
}
|
||||
}
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using AdvancedAlgos.AlgoToken.AlgoTokenDistribution.Algorithms;
|
||||
using Xunit;
|
||||
|
||||
namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution.IntegrationTests.Algorithms
|
||||
{
|
||||
public class FeesDistributionAlgorithmTests
|
||||
{
|
||||
[Fact]
|
||||
public void TestDistributionAlgorithm1()
|
||||
{
|
||||
var miners = new long[] { 100, 100, 100, 100, 100, 100 };
|
||||
var fees = FeesDistributionAlgorithm.Distribute(151000, miners);
|
||||
|
||||
Assert.Equal(10, fees[0]);
|
||||
Assert.Equal(100, fees[1]);
|
||||
Assert.Equal(200, fees[2]);
|
||||
Assert.Equal(300, fees[3]);
|
||||
Assert.Equal(400, fees[4]);
|
||||
Assert.Equal(500, fees[5]);
|
||||
|
||||
Assert.Equal(151000, GetTotalAmount(miners, fees));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TestDistributionAlgorithm2()
|
||||
{
|
||||
var miners = new long[] { 100, 100, 0, 100, 100, 100 };
|
||||
var fees = FeesDistributionAlgorithm.Distribute(131000, miners);
|
||||
|
||||
Assert.Equal(10, fees[0]);
|
||||
Assert.Equal(100, fees[1]);
|
||||
Assert.Equal(0, fees[2]);
|
||||
Assert.Equal(300, fees[3]);
|
||||
Assert.Equal(400, fees[4]);
|
||||
Assert.Equal(500, fees[5]);
|
||||
|
||||
Assert.Equal(131000, GetTotalAmount(miners, fees));
|
||||
}
|
||||
|
||||
private static decimal GetTotalAmount(long[] miners, decimal[] fees)
|
||||
{
|
||||
decimal totalAmount = 0;
|
||||
|
||||
for (int i = 0; i < 6; i++)
|
||||
{
|
||||
totalAmount += miners[i] * fees[i];
|
||||
}
|
||||
|
||||
return totalAmount;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
new-account -n miner_0_account
|
||||
new-account -n miner_1_account
|
||||
new-account -n miner_2_account
|
||||
new-account -n miner_3_account
|
||||
new-account -n miner_4_account
|
||||
new-account -n miner_5_account
|
||||
import-account 0936af475d2701538aad321f87e0a51f2b297634653393e8cab7290a674009a5 -n prefunded
|
||||
eth-transfer miner_0_account 1eth
|
||||
eth-transfer miner_1_account 1eth
|
||||
eth-transfer miner_2_account 1eth
|
||||
eth-transfer miner_3_account 1eth
|
||||
eth-transfer miner_4_account 1eth
|
||||
eth-transfer miner_5_account 1eth
|
||||
deploy-algotoken -n token
|
||||
deploy-algominer 1 0 miner_0_account token -n miner_0
|
||||
deploy-algominer 1 1 miner_1_account token -n miner_1
|
||||
deploy-algominer 1 2 miner_2_account token -n miner_2
|
||||
deploy-algominer 1 3 miner_3_account token -n miner_3
|
||||
deploy-algominer 1 4 miner_4_account token -n miner_4
|
||||
deploy-algominer 1 5 miner_5_account token -n miner_5
|
||||
token.algotoken-transfer miner_0 1m
|
||||
token.algotoken-transfer miner_1 1m
|
||||
token.algotoken-transfer miner_2 1m
|
||||
token.algotoken-transfer miner_3 1m
|
||||
token.algotoken-transfer miner_4 1m
|
||||
token.algotoken-transfer miner_5 1m
|
||||
miner_0.algominer-activateminer
|
||||
miner_1.algominer-activateminer
|
||||
miner_2.algominer-activateminer
|
||||
miner_3.algominer-activateminer
|
||||
miner_4.algominer-activateminer
|
||||
miner_5.algominer-activateminer
|
||||
set-account miner_0_account
|
||||
miner_0.algominer-startmining
|
||||
set-account miner_1_account
|
||||
miner_1.algominer-startmining
|
||||
set-account miner_2_account
|
||||
miner_2.algominer-startmining
|
||||
set-account miner_3_account
|
||||
miner_3.algominer-startmining
|
||||
set-account miner_4_account
|
||||
miner_4.algominer-startmining
|
||||
set-account miner_5_account
|
||||
miner_5.algominer-startmining
|
||||
set-account prefunded
|
||||
deploy-algofees token -n fees1
|
||||
token.algotoken-transfer fees1 151eth
|
||||
token.algotoken-balanceof fees1
|
||||
fees1.algofees-registerminer miner_0
|
||||
fees1.algofees-registerminer miner_1
|
||||
fees1.algofees-registerminer miner_2
|
||||
fees1.algofees-registerminer miner_3
|
||||
fees1.algofees-registerminer miner_4
|
||||
fees1.algofees-registerminer miner_5
|
||||
fees1.algofees-mine
|
||||
token.algotoken-balanceof miner_0_account
|
||||
token.algotoken-balanceof miner_1_account
|
||||
token.algotoken-balanceof miner_2_account
|
||||
token.algotoken-balanceof miner_3_account
|
||||
token.algotoken-balanceof miner_4_account
|
||||
token.algotoken-balanceof miner_5_account
|
||||
File renamed without changes.
+25
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using AdvancedAlgos.AlgoToken.AlgoTokenDistribution;
|
||||
using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement;
|
||||
using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime;
|
||||
using Nethereum.RPC.Eth.DTOs;
|
||||
using Nethereum.Web3;
|
||||
|
||||
namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoFeesContract
|
||||
{
|
||||
public class AlgoFeesDeployCommand : DeployContractCommand
|
||||
{
|
||||
public override string DefaultName => "AlgoFees";
|
||||
|
||||
public string TokenAddress { get; set; }
|
||||
|
||||
protected override async Task<TransactionReceipt> DeployContractAsync(RuntimeContext context, Web3 web3)
|
||||
{
|
||||
var algoFees = new AlgoFees(web3, context.GasPriceProvider);
|
||||
return await algoFees.DeployAsync(context.ResolveContractReference(TokenAddress));
|
||||
}
|
||||
}
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Numerics;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using AdvancedAlgos.AlgoToken.AlgoTokenDistribution;
|
||||
using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement;
|
||||
using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime;
|
||||
using Nethereum.RPC.Eth.DTOs;
|
||||
using Nethereum.Web3;
|
||||
|
||||
namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoFeesContract
|
||||
{
|
||||
public class AlgoFeesMineCommand : EthInvokeTransactionalFunctionCommand
|
||||
{
|
||||
protected override async Task<TransactionReceipt> ExecuteAsync(RuntimeContext context, string contractAddress, Web3 web3)
|
||||
{
|
||||
var algoFees = new AlgoFees(contractAddress, web3, context.GasPriceProvider);
|
||||
|
||||
return await algoFees.MineAsync();
|
||||
}
|
||||
}
|
||||
}
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Numerics;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using AdvancedAlgos.AlgoToken.AlgoTokenDistribution;
|
||||
using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement;
|
||||
using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime;
|
||||
using Nethereum.RPC.Eth.DTOs;
|
||||
using Nethereum.Web3;
|
||||
|
||||
namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoFeesContract
|
||||
{
|
||||
public class AlgoFeesRegisterMinerCommand : EthInvokeTransactionalFunctionCommand
|
||||
{
|
||||
public string MinerAddress { get; set; }
|
||||
|
||||
protected override async Task<TransactionReceipt> ExecuteAsync(RuntimeContext context, string contractAddress, Web3 web3)
|
||||
{
|
||||
var algoFees = new AlgoFees(contractAddress, web3, context.GasPriceProvider);
|
||||
|
||||
return await algoFees.RegisterMinerAsync(context.ResolveContractReference(MinerAddress));
|
||||
}
|
||||
}
|
||||
}
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Numerics;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using AdvancedAlgos.AlgoToken.AlgoTokenDistribution;
|
||||
using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.ContractManagement;
|
||||
using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Runtime;
|
||||
using Nethereum.RPC.Eth.DTOs;
|
||||
using Nethereum.Web3;
|
||||
|
||||
namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoFeesContract
|
||||
{
|
||||
public class AlgoFeesUnregisterMinerCommand : EthInvokeTransactionalFunctionCommand
|
||||
{
|
||||
public string MinerAddress { get; set; }
|
||||
|
||||
protected override async Task<TransactionReceipt> ExecuteAsync(RuntimeContext context, string contractAddress, Web3 web3)
|
||||
{
|
||||
var algoFees = new AlgoFees(contractAddress, web3, context.GasPriceProvider);
|
||||
|
||||
return await algoFees.UnregisterMinerAsync(context.ResolveContractReference(MinerAddress));
|
||||
}
|
||||
}
|
||||
}
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoFeesContract;
|
||||
using Sprache;
|
||||
|
||||
namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Parsers
|
||||
{
|
||||
public static class AlgoFeesParsers
|
||||
{
|
||||
public static void Register()
|
||||
{
|
||||
(from command in CommonParsers.Token("deploy-algofees")
|
||||
from tokenAddress in CommonParsers.StringValue
|
||||
from name in CommonParsers.Switch('n', "name", CommonParsers.Identifier).Optional()
|
||||
select new AlgoFeesDeployCommand
|
||||
{
|
||||
Name = name.GetOrDefault(),
|
||||
TokenAddress = tokenAddress
|
||||
}).Register();
|
||||
|
||||
(from contractReference in CommonParsers.Invoke("algofees-registerminer")
|
||||
from minerAddress in CommonParsers.StringValue
|
||||
select new AlgoFeesRegisterMinerCommand
|
||||
{
|
||||
ContractReference = contractReference,
|
||||
MinerAddress = minerAddress
|
||||
}).Register();
|
||||
|
||||
(from contractReference in CommonParsers.Invoke("algofees-unregisterminer")
|
||||
from minerAddress in CommonParsers.StringValue
|
||||
select new AlgoFeesUnregisterMinerCommand
|
||||
{
|
||||
ContractReference = contractReference,
|
||||
MinerAddress = minerAddress
|
||||
}).Register();
|
||||
|
||||
(from contractReference in CommonParsers.Invoke("algofees-mine")
|
||||
select new AlgoFeesMineCommand
|
||||
{
|
||||
ContractReference = contractReference
|
||||
}).Register();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -26,6 +26,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground
|
||||
ContractManagementParsers.Register();
|
||||
AlgoTokenParsers.Register();
|
||||
AlgoPoolParsers.Register();
|
||||
AlgoFeesParsers.Register();
|
||||
AlgoMinerParsers.Register();
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user