Ich bin paranoid, ob der folgende Vertrag funktionieren wird, und die einzigen Kommentare beziehen sich darauf, wo ich paranoid bin; Also, das ist, wo die Fragen/Paranoia wirklich sind.
Dies ist im Wesentlichen mein einziges Mal, dass ich jemals Token/Blockchain verwenden werde, ist dieses Token für Spendenaktionen/Geschäftsinteraktionen, und ich möchte es nicht verwenden (hier Software/Dienst einfügen; ich möchte auch kein erzwungenes Ende des Spendenzeitraums).
Ich habe mir ein wenig Mühe gegeben, dieses ConsenSys-Dokument zu ändern, und ich möchte wirklich nur, dass es funktioniert (wieder kein Interesse an der Software/dem Dienst Ihrer Wahl). Es ist teilweise Ego und teilweise nicht mehr mein json/utc (was Sinn macht, wenn Sie sehen, dass ich auf die Absicht verweise, eine bestimmte Adresse zu verwenden):
(Das Einfügen hat unerwartet gehandelt, also habe ich die Zeile hinzugefügt)
pragma solidity ^0.4.21;
import "./EIP20Interface.sol";
contract ablockstoken is EIP20Interface {
uint256 constant private MAX_UINT256 = 2**256 - 1;
mapping (address => uint256) public balances;
mapping (address => mapping (address => uint256)) public allowed;
uint8 public decimals; // I'm paranoid I did decimals wrong
uint256 public totalSupply;
string public name;
string public symbol;
uint price = 0.01 ether; // and this is why
string terms = 'Language explaining the terms of repurchasement at a later date';
function ablockstoken( // faux name, I know. Paranoia
uint256 initialSupply,
uint8 public decimals = 18, // and this is where I did the decimals
string name, // I think I've botched it
string symbol
) public {
totalSupply = initialSupply * 65536 ** uint256(decimals);
balanceOf[0xaddy] = totalSupply;// I mentioned in another post about my paranoia
totalSupply = initialSupply; // Also, remix gives an error for
name = "ablockstoken"; // balanceOf regarding it being
symbol = "abt"; // undefined?
}
function transfer(address _to, uint256 _value) public returns (bool success) {
require(balances[msg.sender] >= _value);
balances[msg.sender] -= _value;
balances[_to] += _value;
emit Transfer(msg.sender, _to, _value);
return true;
}
// Most of this is as ConsenSys had done it, the last four functions are different
function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
uint256 allowance = allowed[_from][msg.sender];
require(balances[_from] >= _value && allowance >= _value);
balances[_to] += _value;
balances[_from] -= _value;
if (allowance < MAX_UINT256) {
allowed[_from][msg.sender] -= _value;
}
emit Transfer(_from, _to, _value);
return true;
}
function balanceOf(address _owner) public view returns (uint256 balance) {
return balances[_owner];
}
function approve(address _spender, uint256 _value) public returns (bool success) {
allowed[msg.sender][_spender] = _value;
emit Approval(msg.sender, _spender, _value);
return true;
}
function allowance(address _owner, address _spender) public view returns (uint256 remaining) {
return allowed[_owner][_spender];
}
// terms mentioned at the start of contract; literal human language explanation
function getTerms() constant returns(string) {
return terms;
}
// This was stolen from the programmingtheblockchain and should be good,
// but does it work when added here? Additionally, I may be confused
// from some explanation on either ethereum.org or here, but...
// does the token purchaser cover gas or do I need to cover it
function withdraw() public {
msg.sender.transfer(address(this).balance);
}
function deposit(uint256 amount) payable public {
require(msg.value == amount);
}
function getBalance() public view returns (uint256) {
return address(this).balance;
}
}
Du bist nicht paranoid genug. Ich habe mehrere Mängel entdeckt, als ich es nur angeschaut habe. Gehen Sie verantwortungsvoll mit den Geldern anderer um. Wenn es wirklich wichtig ist, dass Sie Leute finden, die es kalibrieren, um es richtig zu machen. In den meisten Fällen verdienen es die Benutzer, Ihren Qualitätssicherungsprozess im Detail zu kennen.
Der Entwickler sollte sie auch erkennen können. Der Code überträgt das Know-how des Teams, das ihn erstellt hat.
Nicht die Antwort, die Sie wollten, aber ich hoffe, es hilft trotzdem,
bl
Rob Hitchens