Bitcoin Forum
December 14, 2024, 07:34:53 PM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: помогите заполнить текст для токен?  (Read 1064 times)
token1 (OP)
Member
**
Offline Offline

Activity: 86
Merit: 10


View Profile
July 02, 2017, 02:38:23 PM
 #1

Помогите мне создать текст нового токена ethereum?
Назовите лучшее решение, на ваш взгляд, текстовым токеном? Срочное обсуждение.



Ниже приведен примерный токен-контракт с фиксированной поставкой 1000000 единиц, которые первоначально были назначены владельцу договора:
!!! WARNING: This user is a newbie. If you are expecting a message from a more veteran member, then this is an imposter !!!

Hello, help in which lines of the account and what text to enter, and how best?

Following is a sample token contract with a fixed supply of 1000000 units that are initially assigned to the owner of the contract:

  1 pragma solidity ^0.4.8;
  2 
  3 // ----------------------------------------------------------------------------------------------
  4 // Sample fixed supply token contract
  5 // Enjoy. (c) BokkyPooBah 2017. The MIT Licence.
  6 // ----------------------------------------------------------------------------------------------
  7 
  8 // ERC Token Standard #20 Interface
  9 // https://github.com/ethereum/EIPs/issues/20
 10 contract ERC20Interface {
 11     // Get the total token supply
 12     function totalSupply() constant returns (uint256 totalSupply);
 13 
 14     // Get the account balance of another account with address _owner
 15     function balanceOf(address _owner) constant returns (uint256 balance);
 16 
 17     // Send _value amount of tokens to address _to
 18     function transfer(address _to, uint256 _value) returns (bool success);
 19 
 20     // Send _value amount of tokens from address _from to address _to
 21     function transferFrom(address _from, address _to, uint256 _value) returns (bool success);
 22 
 23     // Allow _spender to withdraw from your account, multiple times, up to the _value amount.
 24     // If this function is called again it overwrites the current allowance with _value.
 25     // this function is required for some DEX functionality
 26     function approve(address _spender, uint256 _value) returns (bool success);
 27 
 28     // Returns the amount which _spender is still allowed to withdraw from _owner
 29     function allowance(address _owner, address _spender) constant returns (uint256 remaining);
 30 
 31     // Triggered when tokens are transferred.
 32     event Transfer(address indexed _from, address indexed _to, uint256 _value);
 33 
 34     // Triggered whenever approve(address _spender, uint256 _value) is called.
 35     event Approval(address indexed _owner, address indexed _spender, uint256 _value);
 36 }
 37 
 38 contract FixedSupplyToken is ERC20Interface {
 39     string public constant symbol = "FIXED";
 40     string public constant name = "Example Fixed Supply Token";
 41     uint8 public constant decimals = 18;
 42     uint256 _totalSupply = 1000000;
 43    
 44     // Owner of this contract
 45     address public owner;
 46 
 47     // Balances for each account
 48     mapping(address => uint256) balances;
 49 
 50     // Owner of account approves the transfer of an amount to another account
 51     mapping(address => mapping (address => uint256)) allowed;
 52 
 53     // Functions with this modifier can only be executed by the owner
 54     modifier onlyOwner() {
 55         if (msg.sender != owner) {
 56             throw;
 57         }
 58         _;
 59     }
 60 
 61     // Constructor
 62     function FixedSupplyToken() {
 63         owner = msg.sender;
 64         balances[owner] = _totalSupply;
 65     }
 66 
 67     function totalSupply() constant returns (uint256 totalSupply) {
 68         totalSupply = _totalSupply;
 69     }
 70 
 71     // What is the balance of a particular account?
 72     function balanceOf(address _owner) constant returns (uint256 balance) {
 73         return balances[_owner];
 74     }
 75 
 76     // Transfer the balance from owner's account to another account
 77     function transfer(address _to, uint256 _amount) returns (bool success) {
 78         if (balances[msg.sender] >= _amount
 79             && _amount > 0
 80             && balances[_to] + _amount > balances[_to]) {
 81             balances[msg.sender] -= _amount;
 82             balances[_to] += _amount;
 83             Transfer(msg.sender, _to, _amount);
 84             return true;
 85         } else {
 86             return false;
 87         }
 88     }
 89 
 90     // Send _value amount of tokens from address _from to address _to
 91     // The transferFrom method is used for a withdraw workflow, allowing contracts to send
 92     // tokens on your behalf, for example to "deposit" to a contract address and/or to charge
 93     // fees in sub-currencies; the command should fail unless the _from account has
 94     // deliberately authorized the sender of the message via some mechanism; we propose
 95     // these standardized APIs for approval:
 96     function transferFrom(
 97         address _from,
 98         address _to,
 99         uint256 _amount
100     ) returns (bool success) {
101         if (balances[_from] >= _amount
102             && allowed[_from][msg.sender] >= _amount
103             && _amount > 0
104             && balances[_to] + _amount > balances[_to]) {
105             balances[_from] -= _amount;
106             allowed[_from][msg.sender] -= _amount;
107             balances[_to] += _amount;
108             Transfer(_from, _to, _amount);
109             return true;
110         } else {
111             return false;
112         }
113     }
114 
115     // Allow _spender to withdraw from your account, multiple times, up to the _value amount.
116     // If this function is called again it overwrites the current allowance with _value.
117     function approve(address _spender, uint256 _amount) returns (bool success) {
118         allowed[msg.sender][_spender] = _amount;
119         Approval(msg.sender, _spender, _amount);
120         return true;
121     }
122 
123     function allowance(address _owner, address _spender) constant returns (uint256 remaining) {
124         return allowed[_owner][_spender];
125     }
126 }
ferumflex
Full Member
***
Offline Offline

Activity: 256
Merit: 102


View Profile WWW
July 03, 2017, 05:52:20 AM
 #2

У Вас уже есть хороший контракт для токена. Он делает все что должен делать токен по стандарту ERC20.
token1 (OP)
Member
**
Offline Offline

Activity: 86
Merit: 10


View Profile
July 03, 2017, 08:52:30 AM
 #3

Рад что хороший.Подскажи что нужно вписывать кроме общего количества монет,и создателю количество монет,и в каких строках,очень выручишь меня благодарю за помощь!
Мир вашему дому!
token1 (OP)
Member
**
Offline Offline

Activity: 86
Merit: 10


View Profile
July 03, 2017, 09:00:32 AM
 #4

я не it-специалист,вроди-бы не сложно, по незнаниюнехочу делать ошибок ,создатель токена не я,я только подстраиваю его под себя вот сайт от туда токен,помоги прошу
https://theethereum.wiki/w/index.php/ERC20_Token_Standard
ferumflex
Full Member
***
Offline Offline

Activity: 256
Merit: 102


View Profile WWW
July 03, 2017, 09:02:39 AM
 #5

вот его параметры
Code:
string public constant symbol = "FIXED";
string public constant name = "Example Fixed Supply Token";
uint8 public constant decimals = 18;
uint256 _totalSupply = 1000000;

totalSupply -  общее кол-во монет
decimals - сколько нулей после запятой
name - имя
symbol - символ

общее кол-во монет у тебя прописано не верно сейчас
если поставь столько и у тебя 18 нулей после запятой
то 1000000000000000000000000000 превратится в 1 000 000 000,000000000000000000 то есть один миллиард монет с возможностью поделить до 18 знака
token1 (OP)
Member
**
Offline Offline

Activity: 86
Merit: 10


View Profile
July 03, 2017, 09:16:35 AM
 #6

мне нужно что-бы было примерно 20.000.000монет,после запитой что-бы было как у всех 8нулей,это мне нужно вписать 20000000монет,
в этой строке вписать uint8 public constant decimals = 8.
И маркеров,адресов никаких добавлять ненужно подскажи прошу?
token1 (OP)
Member
**
Offline Offline

Activity: 86
Merit: 10


View Profile
July 03, 2017, 12:21:40 PM
 #7

Подскажи а где можно поставить минимальную сумму за токен?и куда добавить оформление?
у тебя есть свой токен?
ferumflex
Full Member
***
Offline Offline

Activity: 256
Merit: 102


View Profile WWW
July 04, 2017, 06:15:13 AM
 #8

мне нужно что-бы было примерно 20.000.000монет,после запитой что-бы было как у всех 8нулей,это мне нужно вписать 20000000монет,
в этой строке вписать uint8 public constant decimals = 8.
И маркеров,адресов никаких добавлять ненужно подскажи прошу?
Читай внимательно мой пост, я же написал как сделать чтобы было 20 миллионов и 8 знаков после запятой.

Подскажи а где можно поставить минимальную сумму за токен?и куда добавить оформление?
у тебя есть свой токен?
Минимальную цену нужно программировать либо отдельным контрактом либо добавлять в контракт токена. Про какое оформление ты говоришь?


Вот примеры контрактов на эфире, там ты найдешь кучу разных вариантов токенов:
https://github.com/OpenZeppelin/zeppelin-solidity/tree/master/contracts
token1 (OP)
Member
**
Offline Offline

Activity: 86
Merit: 10


View Profile
July 04, 2017, 10:32:22 AM
 #9

Благодарю за помощь и примеры!!!про оформление как в форках-альткойнах загружать иконки но это сейчас позже,я ошибся код токена как я понял мне неподходит там как я понял вся эмиссия токены создателю токена принадлежат ,ещё с англоязычного перевода видео про токен-фабрику на ютубе  18 нулей при создание ставят,потому что самый маленький блок при добыче-загрузке ефириума с 18нулями ,ставил 18 человек,но на счету видны 8 как обычно,но лучше тебя послушаю поставлю 8 ,теперь другой код токена нашел в котором часть эмиссии монет может принадлежать создателю,теперь в нем буду разбираться.Поможешь пожалуйста?Это хороший код?
https://etherscan.io/address/0x7b52427cec68182C74d0b5f9Dec57ddD8f727DE9#code

pragma solidity ^0.4.4;

/**
 * @title Contract for object that have an owner
 */
contract Owned {
    /**
     * Contract owner address
     */
    address public owner;

    /**
     * @dev Delegate contract to another person
     * @param _owner New owner address
     */
    function setOwner(address _owner) onlyOwner
    { owner = _owner; }

    /**
     * @dev Owner check modifier
     */
    modifier onlyOwner { if (msg.sender != owner) throw; _; }
}

/**
 * @title Common pattern for destroyable contracts
 */
contract Destroyable {
    address public hammer;

    /**
     * @dev Hammer setter
     * @param _hammer New hammer address
     */
    function setHammer(address _hammer) onlyHammer
    { hammer = _hammer; }

    /**
     * @dev Destroy contract and scrub a data
     * @notice Only hammer can call it
     */
    function destroy() onlyHammer
    { suicide(msg.sender); }

    /**
     * @dev Hammer check modifier
     */
    modifier onlyHammer { if (msg.sender != hammer) throw; _; }
}

/**
 * @title Generic owned destroyable contract
 */
contract Object is Owned, Destroyable {
    function Object() {
        owner  = msg.sender;
        hammer = msg.sender;
    }
}

// Standard token interface (ERC 20)
// https://github.com/ethereum/EIPs/issues/20
contract ERC20
{
// Functions:
    /// @return total amount of tokens
    uint256 public totalSupply;

    /// @param _owner The address from which the balance will be retrieved
    /// @return The balance
    function balanceOf(address _owner) constant returns (uint256);

    /// @notice send `_value` token to `_to` from `msg.sender`
    /// @param _to The address of the recipient
    /// @param _value The amount of token to be transferred
    /// @return Whether the transfer was successful or not
    function transfer(address _to, uint256 _value) returns (bool);

    /// @notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`
    /// @param _from The address of the sender
    /// @param _to The address of the recipient
    /// @param _value The amount of token to be transferred
    /// @return Whether the transfer was successful or not
    function transferFrom(address _from, address _to, uint256 _value) returns (bool);

    /// @notice `msg.sender` approves `_addr` to spend `_value` tokens
    /// @param _spender The address of the account able to transfer the tokens
    /// @param _value The amount of wei to be approved for transfer
    /// @return Whether the approval was successful or not
    function approve(address _spender, uint256 _value) returns (bool);

    /// @param _owner The address of the account owning tokens
    /// @param _spender The address of the account able to transfer the tokens
    /// @return Amount of remaining tokens allowed to spent
    function allowance(address _owner, address _spender) constant returns (uint256);

// Events:
    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}

/**
 * @title Token contract represents any asset in digital economy
 */
contract Token is Object, ERC20 {
    /* Short description of token */
    string public name;
    string public symbol;

    /* Total count of tokens exist */
    uint public totalSupply;

    /* Fixed point position */
    uint8 public decimals;
   
    /* Token approvement system */
    mapping(address => uint) balances;
    mapping(address => mapping(address => uint)) allowances;
 
    /**
     * @dev Get balance of plain address
     * @param _owner is a target address
     * @return amount of tokens on balance
     */
    function balanceOf(address _owner) constant returns (uint256)
    { return balances[_owner]; }
 
    /**
     * @dev Take allowed tokens
     * @param _owner The address of the account owning tokens
     * @param _spender The address of the account able to transfer the tokens
     * @return Amount of remaining tokens allowed to spent
     */
    function allowance(address _owner, address _spender) constant returns (uint256)
    { return allowances[_owner][_spender]; }

    /* Token constructor */
    function Token(string _name, string _symbol, uint8 _decimals, uint _count) {
        name        = _name;
        symbol      = _symbol;
        decimals    = _decimals;
        totalSupply = _count;
        balances[msg.sender] = _count;
    }
 
    /**
     * @dev Transfer self tokens to given address
     * @param _to destination address
     * @param _value amount of token values to send
     * @notice `_value` tokens will be sended to `_to`
     * @return `true` when transfer done
     */
    function transfer(address _to, uint _value) returns (bool) {
        if (balances[msg.sender] >= _value) {
            balances[msg.sender] -= _value;
            balances[_to]        += _value;
            Transfer(msg.sender, _to, _value);
            return true;
        }
        return false;
    }

    /**
     * @dev Transfer with approvement mechainsm
     * @param _from source address, `_value` tokens shold be approved for `sender`
     * @param _to destination address
     * @param _value amount of token values to send
     * @notice from `_from` will be sended `_value` tokens to `_to`
     * @return `true` when transfer is done
     */
    function transferFrom(address _from, address _to, uint256 _value) returns (bool) {
        var avail = allowances[_from][msg.sender]
                  > balances[_from] ? balances[_from]
                                    : allowances[_from][msg.sender];
        if (avail >= _value) {
            allowances[_from][msg.sender] -= _value;
            balances[_from] -= _value;
            balances[_to]   += _value;
            Transfer(_from, _to, _value);
            return true;
        }
        return false;
    }

    /**
     * @dev Give to target address ability for self token manipulation without sending
     * @param _spender target address (future requester)
     * @param _value amount of token values for approving
     */
    function approve(address _spender, uint256 _value) returns (bool) {
        allowances[msg.sender][_spender] += _value;
        Approval(msg.sender, _spender, _value);
        return true;
    }

    /**
     * @dev Reset count of tokens approved for given address
     * @param _spender target address (future requester)
     */
    function unapprove(address _spender)
    { allowances[msg.sender][_spender] = 0; }
}

contract TokenEmission is Token {
    function TokenEmission(string _name, string _symbol, uint8 _decimals,
                           uint _start_count)
             Token(_name, _symbol, _decimals, _start_count)
    {}

    /**
     * @dev Token emission
     * @param _value amount of token values to emit
     * @notice owner balance will be increased by `_value`
     */
    function emission(uint _value) onlyOwner {
        // Overflow check
        if (_value + totalSupply < totalSupply) throw;

        totalSupply     += _value;
        balances[owner] += _value;
    }
 
    /**
     * @dev Burn the token values from sender balance and from total
     * @param _value amount of token values for burn
     * @notice sender balance will be decreased by `_value`
     */
    function burn(uint _value) {
        if (balances[msg.sender] >= _value) {
            balances[msg.sender] -= _value;
            totalSupply      -= _value;
        }
    }
}

library CreatorTokenEmission {
    function create(string _name, string _symbol, uint8 _decimals, uint256 _start_count) returns (TokenEmission)
    { return new TokenEmission(_name, _symbol, _decimals, _start_count); }

    function version() constant returns (string)
    { return "v0.6.0 (1b4435b8)"; }

    function abi() constant returns (string)
    { return '[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"hammer","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"emission","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"destroy","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_hammer","type":"address"}],"name":"setHammer","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"}],"name":"unapprove","outputs":[],"payable":false,"type":"function"},{"inputs":[{"name":"_name","type":"string"},{"name":"_symbol","type":"string"},{"name":"_decimals","type":"uint8"},{"name":"_start_count","type":"uint256"}],"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_spender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Approval","type":"event"}]'; }
}

/**
 * @title Builder based contract
 */
contract Builder is Object {
    /**
     * @dev this event emitted for every builded contract
     */
    event Builded(address indexed client, address indexed instance);
 
    /* Addresses builded contracts at sender */
    mapping(address => address[]) public getContractsOf;
 
    /**
     * @dev Get last address
     * @return last address contract
     */
    function getLastContract() constant returns (address) {
        var sender_contracts = getContractsOf[msg.sender];
        return sender_contracts[sender_contracts.length - 1];
    }

    /* Building beneficiary */
    address public beneficiary;

    /**
     * @dev Set beneficiary
     * @param _beneficiary is address of beneficiary
     */
    function setBeneficiary(address _beneficiary) onlyOwner
    { beneficiary = _beneficiary; }

    /* Building cost  */
    uint public buildingCostWei;

    /**
     * @dev Set building cost
     * @param _buildingCostWei is cost
     */
    function setCost(uint _buildingCostWei) onlyOwner
    { buildingCostWei = _buildingCostWei; }

    /* Security check report */
    string public securityCheckURI;

    /**
     * @dev Set security check report URI
     * @param _uri is an URI to report
     */
    function setSecurityCheck(string _uri) onlyOwner
    { securityCheckURI = _uri; }
}

//
// AIRA Builder for TokenEmission contract
//
contract BuilderTokenEmission is Builder {
    /**
     * @dev Run script creation contract
     * @param _name is name token
     * @param _symbol is symbol token
     * @param _decimals is fixed point position
     * @param _start_count is count of tokens exist
     * @param _client is a contract destination address (zero for sender)
     * @return address new contract
     */
    function create(string _name, string _symbol, uint8 _decimals, uint256 _start_count, address _client) payable returns (address) {
        if (buildingCostWei > 0 && beneficiary != 0) {
            // Too low value
            if (msg.value < buildingCostWei) throw;
            // Beneficiary send
            if (!beneficiary.send(buildingCostWei)) throw;
            // Refund
            if (msg.value > buildingCostWei) {
                if (!msg.sender.send(msg.value - buildingCostWei)) throw;
            }
        } else {
            // Refund all
            if (msg.value > 0) {
                if (!msg.sender.send(msg.value)) throw;
            }
        }

        if (_client == 0)
            _client = msg.sender;
 
        var inst = CreatorTokenEmission.create(_name, _symbol, _decimals, _start_count);
        getContractsOf[_client].push(inst);
        Builded(_client, inst);
        inst.transfer(_client, _start_count);
        inst.setOwner(_client);
        inst.setHammer(_client);
        return inst;
    }
}
ferumflex
Full Member
***
Offline Offline

Activity: 256
Merit: 102


View Profile WWW
July 04, 2017, 10:59:56 AM
 #10

Есть тег code на форуме. Используйте его

Все зависит от того что надо. Если не програмер то найдите, сделает под Вас. Либо берите пример копируйте его, но тогда он может не так работать как Вы хотите. Потому что есть куча вариантов токенов: с эмиссией, без эмиссии, с автоматической продажей по типу исо и т.д.
token1 (OP)
Member
**
Offline Offline

Activity: 86
Merit: 10


View Profile
July 04, 2017, 11:09:44 AM
 #11

попробую,Вот видео так тоже можно просто вствить подходящий код,ничего незаполняя   на 2:43 https://youtu.be/09EH3RMdxNU?t=165,позже количество монет название,кол-во десятичных и всё?
надеюсь получится позже напишу!
ferumflex
Full Member
***
Offline Offline

Activity: 256
Merit: 102


View Profile WWW
July 05, 2017, 05:43:18 AM
 #12

да, только кол-во монет, название и симбол можно указать прямо в контракте. Рекомендую протестировать в начале контракт на тестовой сети. В кошельке можно переключиться на тестовую сеть, получить тестовый эфир здесь http://faucet.ropsten.be:3001/ и попробовать залить контракт
token1 (OP)
Member
**
Offline Offline

Activity: 86
Merit: 10


View Profile
July 05, 2017, 07:08:18 AM
 #13

всё понял,подскажи как написать транзакцию создателям или создателю,отправить часть монет?Есть ли готовый вариант?
Emir999
Newbie
*
Offline Offline

Activity: 103
Merit: 0


View Profile
December 28, 2017, 05:22:33 PM
 #14

На ютубе набери *создание токена для блондинки* там увидишь что и как делается, а рассказывать долго что и к чему.
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!