Title: Создание нового токена на Ethereum - вопрос по remix Post by: shlomogold on October 06, 2020, 05:01:48 PM Делаю тестовые токены на разных шаблонах, возник вопрос по компиляции в remix. В интернетах нашел два шаблона, один покороче, другой чуть подлиннее.
На одном шаблоне коде .sol файл получается один вида tokenTEST, а в другом три - один по названию токена, второй SafeMath.sol, третий ERC20Interface. Во втором случае, какой из файлов деплоить, правильно ли я понимаю что только tokenTEST? И что вот эти два - SafeMath и ERC20Interface в себе несут, почему они отдельно появляются в дополнение к первому? Title: Re: Создание нового токена на Ethereum - вопрос по remix Post by: stmar on October 06, 2020, 10:57:50 PM Все верно, выбераешь TestToken/
По остальному - Чтобы TestToken работал, ему нужно операться на своего рода схему-инструкцию. Вот он и опирается на базовый интерфейс ERC-20 и на библиотеку Safe Math. То же самое придется делать и при создании токенов ERC - 223 и 721, да и других. Если этого не делать, то получишь что-то вроде автомобиля без двигателя. Да все это описано на кодерах в гайде про ERC-20, который ты вроде как читал, перечитай еще раз, там неплохо все описано. Title: Re: Создание нового токена на Ethereum - вопрос по remix Post by: shlomogold on October 07, 2020, 08:53:06 AM Все верно, выбераешь TestToken/ По остальному - Чтобы TestToken работал, ему нужно операться на своего рода схему-инструкцию. Вот он и опирается на базовый интерфейс ERC-20 и на библиотеку Safe Math. То же самое придется делать и при создании токенов ERC - 223 и 721, да и других. Если этого не делать, то получишь что-то вроде автомобиля без двигателя. Да все это описано на кодерах в гайде про ERC-20, который ты вроде как читал, перечитай еще раз, там неплохо все описано. я гуманитарий, какие то простые вещи в общих чертах я еще способен понять, а вот все что касается кода, тут уже сложности возникают. вот другой вопрос, чтобы отдельную ветку не создавать. деплою я этот свой первый контракт в сеть через MEW и metamask. оно мне там показывает стоимость, ну например 16 долл эквивалент. на ethgasstation стоимость gwei в районе 40-50. отправляю контракт, он минут 10 процессит и выкидывает как невошедший в блоки. уже попыток 20 совершил, немного меняя стоимость оплаты, не помогает. почему? p.s. в ropsten тестовые токены залетают за пару минут в блокчейн, а тут вот никак Title: Re: Создание нового токена на Ethereum - вопрос по remix Post by: stmar on October 07, 2020, 10:31:46 PM Не совсем понятно что у вас происходит.
По идее все должно получаться. Можно ли взглянуть на отмененную транзакцию на etherscan? Title: Re: Создание нового токена на Ethereum - вопрос по remix Post by: shlomogold on October 08, 2020, 04:45:22 PM Не совсем понятно что у вас происходит. По идее все должно получаться. Можно ли взглянуть на отмененную транзакцию на etherscan? в тот то и дело, что ничего не происходит. делаю деплой контракта на токен в mew, в metamask делаю оплату, он минут 10-20 процессит, потом выдает что первые 50 блоков не приняли, но возможно примут потом. транзакций на etherscan нет никаких Title: Re: Создание нового токена на Ethereum - вопрос по remix Post by: stmar on October 08, 2020, 09:50:24 PM Возможно я понял, что у вас происходит.
Я все думал - зачем вам промежуточное звено в виде MEW? Достаточно remix+metamask. Какой вариант вы использовали: 1. У вас кошелек на MEW? 2. Вы разворачиваете контракт на MEW с использованием bytecode и abi, которуе получили в remix? Title: Re: Создание нового токена на Ethereum - вопрос по remix Post by: shlomogold on October 08, 2020, 10:10:05 PM Возможно я понял, что у вас происходит. Я все думал - зачем вам промежуточное звено в виде MEW? Достаточно remix+metamask. Какой вариант вы использовали: 1. У вас кошелек на MEW? 2. Вы разворачиваете контракт на MEW с использованием bytecode и abi, которуе получили в remix? 1. да 2. да, именно так. в метамаск стоит цена, я иду в advanced, там на выбор еще три варианта. я пробовал все. через ремикс пробовал, не получилось p.s. через mew я сначала делал тестовые в ropsten, поэтому мне там все показалось удобным и знакомым Title: Re: Создание нового токена на Ethereum - вопрос по remix Post by: stmar on October 09, 2020, 10:48:56 PM Возможные ошибки развертывания контракта из mew.
- При вставке bytecode из remix копируются bytecode вместе с "opcodes", там нужно выбрать "object". - Возможно неправильно выбрано имя контракта. А вообще конечно нужно разворачивать контракт из remix с metamask без mew. Если кошелек в mew, то перенести privatkey в metamask. Это старая версия remix, она проще и понятнее: https://remix.ethereum.org/#optimize=false&evmVersion=null&version=soljson-v0.4.13+commit.0fb4cb1a.js&appVersion=0.7.7 Title: Re: Создание нового токена на Ethereum - вопрос по remix Post by: shlomogold on October 10, 2020, 08:16:57 PM Возможные ошибки развертывания контракта из mew. - При вставке bytecode из remix копируются bytecode вместе с "opcodes", там нужно выбрать "object". - Возможно неправильно выбрано имя контракта. А вообще конечно нужно разворачивать контракт из remix с metamask без mew. Если кошелек в mew, то перенести privatkey в metamask. Это старая версия remix, она проще и понятнее: https://remix.ethereum.org/#optimize=false&evmVersion=null&version=soljson-v0.4.13+commit.0fb4cb1a.js&appVersion=0.7.7 попробовал сделать compile в старой версии. вижу в коде opcodes и тут. но сделал тестовый deploy в ropsten через remix напрямую, токен создался. повторил все те же самые действия в основной сети, и опять то же самое, не деплоит в общем, на данный момент в тестовой все работает, в основной ничего не работает. действия при этом одни и те же UPD: делаю апдейт напрямую через старую версию, там действительно bytecode без opcodes. в тестовой сети пара минут и готово, в обычной ставлю гвей выше самого высокого на ethgasstation, оно надолго ставит транзакцию в ожидание, но на этом и все в общем то. ничего не проходит Title: Re: Создание нового токена на Ethereum - вопрос по remix Post by: stmar on October 11, 2020, 09:05:19 PM Выложи здесь код своего контракта, если это конечно не военная тайна.
Title: Re: Создание нового токена на Ethereum - вопрос по remix Post by: shlomogold on October 11, 2020, 09:36:42 PM Выложи здесь код своего контракта, если это конечно не военная тайна. не тайна, код в открытых брал. это копия какого-то мануала-примера, нашел на vc.ru вроде pragma solidity ^0.5.0; // ---------------------------------------------------------------------------- // ERC Token Standard #20 Interface // // ---------------------------------------------------------------------------- contract ERC20Interface { function totalSupply() public view returns (uint); function balanceOf(address tokenOwner) public view returns (uint balance); function allowance(address tokenOwner, address spender) public view returns (uint remaining); function transfer(address to, uint tokens) public returns (bool success); function approve(address spender, uint tokens) public returns (bool success); function transferFrom(address from, address to, uint tokens) public returns (bool success); event Transfer(address indexed from, address indexed to, uint tokens); event Approval(address indexed tokenOwner, address indexed spender, uint tokens); } // ---------------------------------------------------------------------------- // Safe Math Library // ---------------------------------------------------------------------------- contract SafeMath { function safeAdd(uint a, uint b) public pure returns (uint c) { c = a + b; require(c >= a); } function safeSub(uint a, uint b) public pure returns (uint c) { require(b <= a); c = a - b; } function safeMul(uint a, uint b) public pure returns (uint c) { c = a * b; require(a == 0 || c / a == b); } function safeDiv(uint a, uint b) public pure returns (uint c) { require(b > 0); c = a / b; } } contract TESTtoken is ERC20Interface, SafeMath { string public name; string public symbol; uint8 public decimals; // 18 decimals is the strongly suggested default, avoid changing it uint256 public _totalSupply; mapping(address => uint) balances; mapping(address => mapping(address => uint)) allowed; /** * Constructor function * * Initializes contract with initial supply tokens to the creator of the contract */ constructor() public { name = "TEST token"; symbol = "TST"; decimals = 18; _totalSupply = 1000000000000000000000000; balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } function totalSupply() public view returns (uint) { return _totalSupply - balances[address(0)]; } function balanceOf(address tokenOwner) public view returns (uint balance) { return balances[tokenOwner]; } function allowance(address tokenOwner, address spender) public view returns (uint remaining) { return allowed[tokenOwner][spender]; } function approve(address spender, uint tokens) public returns (bool success) { allowed[msg.sender][spender] = tokens; emit Approval(msg.sender, spender, tokens); return true; } function transfer(address to, uint tokens) public returns (bool success) { balances[msg.sender] = safeSub(balances[msg.sender], tokens); balances[to] = safeAdd(balances[to], tokens); emit Transfer(msg.sender, to, tokens); return true; } function transferFrom(address from, address to, uint tokens) public returns (bool success) { balances[from] = safeSub(balances[from], tokens); allowed[from][msg.sender] = safeSub(allowed[from][msg.sender], tokens); balances[to] = safeAdd(balances[to], tokens); emit Transfer(from, to, tokens); return true; } } еще есть такой, этот я на happyhodler взял. я их оба ставил, оба в тестовой сети проходили, а в обычной нет pragma solidity ^0.4.21; contract TESTtoken { uint256 totalSupply_; string public constant name = "TEST token"; string public constant symbol = "TST"; uint8 public constant decimals = 18; uint256 public constant initialSupply =1000000000000000000000000 ; event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); mapping (address => uint256) balances; mapping (address => mapping (address => uint256)) allowed; function totalSupply() public view returns (uint256){ return totalSupply_; } function balanceOf(address _owner) public view returns (uint256){ return balances[_owner]; } function allowance(address _owner, address _spender) public view returns (uint256) { return allowed[_owner][_spender]; } function transfer(address _to, uint256 _value) public returns (bool ) { require(_to != address(0)); require(balances[msg.sender] >= _value); balances[msg.sender] = balances[msg.sender] - _value; balances[_to] = balances[_to] + _value; emit Transfer(msg.sender, _to, _value); return true; } function approve(address _spender, uint256 _value) public returns (bool) { allowed[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } function transferFrom(address _from, address _to, uint256 _value) public returns (bool) { require(_to != address(0)); require(_value <= balances[_from]); require(_value <= allowed[_from][msg.sender]); balances[_from] = balances[_from] - _value; balances[_to] = balances[_to] + _value; allowed[_from][msg.sender] = allowed[_from][msg.sender] - _value; emit Transfer(_from, _to, _value); return true; } function increaseApproval(address _spender, uint _addedValue) public returns (bool) { allowed[msg.sender][_spender] = allowed[msg.sender][_spender] + _addedValue; emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) { uint oldValue = allowed[msg.sender][_spender]; if (_subtractedValue > oldValue) { allowed[msg.sender][_spender] = 0; } else { allowed[msg.sender][_spender] = oldValue - _subtractedValue; } emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } function TESTtoken() public { totalSupply_ = initialSupply; balances[msg.sender] = initialSupply; emit Transfer(0x0, msg.sender, initialSupply); } } Title: Re: Создание нового токена на Ethereum - вопрос по remix Post by: shlomogold on October 17, 2020, 03:26:36 PM проблема похоже не в коде, а в самих кошельках. ничего никуда не посылает с кошелька. ни на обменник, ни на мой собственный второй адрес. я его ввожу, нажимаю отправить, а она мне пишет введите рабочий адрес. бред удивительный проблема решена. вырубил mew, зашел через метамаск в remix, сделал компиляцию кода и задеплоил за 30 секунд Title: Re: Создание нового токена на Ethereum - вопрос по remix Post by: stmar on October 18, 2020, 10:40:48 PM проблема решена. вырубил mew, зашел через метамаск в remix, сделал компиляцию Какую же версию remix использовал - старую или новую?кода и задеплоил за 30 секунд Title: Re: Создание нового токена на Ethereum - вопрос по remix Post by: shlomogold on October 18, 2020, 11:33:49 PM проблема решена. вырубил mew, зашел через метамаск в remix, сделал компиляцию Какую же версию remix использовал - старую или новую?кода и задеплоил за 30 секунд старую, ту что ты мне дал. но там скорее с mew был глюк, тк я даже сам себе эфиры с одного адреса на другой не мог послать, пока в него был залогинен |