Как можно использовать токен «только для друзей» в других валютах?

Начну с того, что я новичок. Я изучаю Solidity и как работают Smart Contracts. То, что я хотел бы сделать, просто: я хотел бы продать MyFriendToken (MFT) только для друзей, в обмен на некоторый ETH (1 ETH = 1000 MFT), а затем разрешить им торговать этим токеном с другими валютами или другими токенами ( возможно через EtherDelta).

Вот простой договор о моих двух вопросах (ниже):

pragma solidity ^0.4.0;
contract ERC20 {
    //here are the same functions defined in the TokenContractFragment
    //https://theethereum.wiki/w/index.php/ERC20_Token_Standard

    function balanceOf(address _owner) constant returns (uint balance);
    function transfer(address _to, uint _value) returns (bool success);
    function transferFrom(address _from, address _to, uint _value) returns (bool success);
    function approve(address _spender, uint _value) returns (bool success);
    function allowance(address _owner, address _spender) constant returns (uint remaining);
    event Transfer(address indexed _from, address indexed _to, uint _value);
    event Approval(address indexed _owner, address indexed _spender, uint _value);
    uint public totalSupply = 0;
    mapping(address => uint256) balances;
}

contract MyFriendToken is ERC20{
    string public token_name;
    string public symbol;
    uint8 public decimals;

    address public owner;

    bool purchase_OK = true;

    address friend1 = address(0x123...);
    address friend2 = address(0x456...);
    //.....

    function purchase_ko() {
        if(msg.sender != owner){ throw;}
        purchase_OK = false;
    }

    function purchase_ok()  {
        if(msg.sender != owner){ throw;}
        purchase_OK = true;
    }

    function MyFriendToken(){

        owner = msg.sender;
        token_name = "MyFriendToken";
        symbol = "MFT";
        decimals = 18;
    }

    function kill() {
        if (msg.sender == owner) selfdestruct(owner);
    }

    function() payable {
        if(!purchase_OK){throw;}
        if(msg.sender != friend1 && msg.sender != friend2) {throw;}

        owner.transfer(msg.value);
        uint256 myFriendToken = (msg.value * 1000);
        totalSupply += myFriendToken;
        balances[msg.sender] += myFriendToken;
    }
}

Вот мои вопросы:

1) Когда покупка заканчивается, могут ли мои друзья обменять этот токен на EtherDelta, например?

2) Если я вызову функцию kill(), потеряет ли баланс моих друзей?

Большое спасибо. Если этот вопрос слишком широк или если это не подходящее место, я удалю без проблем.

6 голосов | спросил d3llafr33 9 J000000Sunday17 2017, 19:56:28

1 ответ


3

1- Думаю, чтобы добавить ваш токен в Etherdelta, вам нужно связаться с ним по адресу https://gitter.im/etherdelta/etherdelta.github.io

2-, как указано в официальной документации:

  

Эфир, хранящийся на этом адресе, отправляется назначенной цели, а затем   хранилище и код удаляются из состояния

, чтобы ваши балансы друзей были потеряны (вы не будете знать, что такое баланс адреса X), но вся сумма будет отправлена ​​на адрес владельца.

ответил Badr Bellaj 12 J000000Wednesday17 2017, 02:35:46

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132