Bitcoin Forum
July 12, 2024, 09:18:13 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: ETH токены  (Read 1559 times)
ShDenis (OP)
Full Member
***
Offline Offline

Activity: 313
Merit: 103



View Profile
August 21, 2017, 11:11:22 AM
 #1

Поясните кто знает, пожалуйста, по каким критериям эфириум клиенты распознают среди всех контрактов те, которые являются токенами. Т.е. есть какой-то контракт с прикладной логикой и есть контракт в котором могут храниться и пересылаться балансы. Почему контракт второго типа можно "использовать рядом" с основным кошельком?
ferumflex
Full Member
***
Offline Offline

Activity: 256
Merit: 102


View Profile WWW
August 22, 2017, 12:10:57 PM
 #2

У контракт есть определенный интерфейс(читай функции которые можно вызвать, с определенными названиями). Контракты могут вызывать другие контракты
ShDenis (OP)
Full Member
***
Offline Offline

Activity: 313
Merit: 103



View Profile
August 22, 2017, 03:07:41 PM
 #3

ссылкой не поделитесь? (мне не лень искать, просто не получилось).
т.е. есть зарезервированные имена функций и переменных, по которым токены выделяются из всех остальных контрактов? т.е. если я переименую функцию transfer в transfer1 то evm не поймёт что перед ней контракт валюты?
nagor2
Jr. Member
*
Offline Offline

Activity: 98
Merit: 3


View Profile
August 22, 2017, 03:21:14 PM
 #4

Да это деление на токены и не токены - условное. Просто есть смарт-контракты, некоторые из которых могут выполнять функцию платежного средства, хранить балансы и реализовывать некоторый стандартный набор функций, присущий токенам. Эфиримной виртуальной машине глубоко безразлично, что перед ней - токен, или любой другой контракт. Она их никак не различает)
hero10
Member
**
Offline Offline

Activity: 73
Merit: 10

Creating Smart Contracts !!!


View Profile WWW
August 22, 2017, 03:56:06 PM
 #5

если скажете зачем это может быть более конструктивный ответ.

Creation and Audit of Smart Contracts ... www.smartcontract.life
ShDenis (OP)
Full Member
***
Offline Offline

Activity: 313
Merit: 103



View Profile
August 22, 2017, 04:11:08 PM
 #6

Пытаюсь понять, почему при установке контрактов mist некоторые из них сам определяет как контракты валюты и помещает внизу основного аккаунта. В клиентах эфира есть функционал, который работает только с контрактами-токенами (кошелёк с возможностью хранить и пересылать). Интересно, как он определяет что перед ним такой контракт перед тем как его туда поместить.
ShDenis (OP)
Full Member
***
Offline Offline

Activity: 313
Merit: 103



View Profile
August 22, 2017, 04:53:10 PM
 #7

наверное сам нашёл.

ERC: 20
Title: Token standard
Status: Draft
Type: Informational
Created: 19-11.2015
Resolution: https://github.com/ethereum/wiki/wiki/Standardized_Contract_APIs
Abstract
The following describes standard functions a token contract can implement.
Motivation
Those will allow dapps and wallets to handle tokens across multiple interfaces/dapps.
The most important here are, transfer, balanceOf and the Transfer event.
ferumflex
Full Member
***
Offline Offline

Activity: 256
Merit: 102


View Profile WWW
August 22, 2017, 07:47:39 PM
 #8

ERC20 это стандарт токенов. По этому стандарту контракт должен реализовать определенные функции(это называется реализовывает интерфейс). И да если переименовать transfer в transfer1, то уже не поймут что это токен. посмотрите здесь как реализованы токены
https://github.com/OpenZeppelin/zeppelin-solidity/tree/master/contracts/token
ShDenis (OP)
Full Member
***
Offline Offline

Activity: 313
Merit: 103



View Profile
August 22, 2017, 08:19:01 PM
 #9

т.е. даже если токен не полностью erc20, он тоже должен иметь массив, событие и функцию под указанными именами, что бы быть распознаным.
ferumflex
Full Member
***
Offline Offline

Activity: 256
Merit: 102


View Profile WWW
August 23, 2017, 07:56:03 AM
 #10

т.е. даже если токен не полностью erc20, он тоже должен иметь массив, событие и функцию под указанными именами, что бы быть распознаным.
Я думаю да. А зачем Вам не полностью erc20, вы можете взять стандартный токен и добавить в него свой функционал. Также стандарты не стоят на месте появляются новые например https://github.com/ethereum/EIPs/issues/223
ShDenis (OP)
Full Member
***
Offline Offline

Activity: 313
Merit: 103



View Profile
August 24, 2017, 11:10:26 AM
 #11

а ещё такой вопрос. токены есть смысл делать с возможностью увеличения / уменьшения общей эмиссии:

  • фиксированные (без такой возможности)
  • майнингом (по разным правилам)
  • с пополнением  и/или снятием с общего баланса через функции для владельца
  • с пополнением через покупку за эфир

от чего отталкиваться делая выбор в сторону того или иного подхода?
ferumflex
Full Member
***
Offline Offline

Activity: 256
Merit: 102


View Profile WWW
August 24, 2017, 02:45:17 PM
 #12

Обычно идут токены с фиксированной комиссией или выпуском на этапе ico(после ico кол-во фиксируется и нельзя его уже изменить никак). Общий баланс я бы сделал с помощью мультисиг кошелька. Покупка за эфир - просто нужно реализовать отдельный контракт.


Самый простой (как по мне): с фиксированной комиссией и с возможностью покупать через эфир (второй контракт).
ShDenis (OP)
Full Member
***
Offline Offline

Activity: 313
Merit: 103



View Profile
August 24, 2017, 03:31:40 PM
 #13

Обычно идут токены с фиксированной комиссией или выпуском на этапе ico(после ico кол-во фиксируется и нельзя его уже изменить никак). Общий баланс я бы сделал с помощью мультисиг кошелька. Покупка за эфир - просто нужно реализовать отдельный контракт.


Самый простой (как по мне): с фиксированной комиссией и с возможностью покупать через эфир (второй контракт).

Не понял про фиксированную комиссию. Может имелось ввиду с фиксированной эмиссией?
А для чего второй контракт для покупки токена за эфир. Вроде как видел примеры, как в контракте токена делают отдельные методы для установки/чтения курса, и ещё пару для покупики/продажи токена за эфир. В чём целесообразность выносить в отдельный контракт?
valutov
Full Member
***
Offline Offline

Activity: 139
Merit: 100


View Profile
August 25, 2017, 03:39:16 AM
 #14

mapping(address => uint) balances;

Эта строчка делает из простого контракта денежный контракт. Таблица балансов - это сущность денег, она существует во всех денежных системах - в вещных, наличных, кредитных, электронных и т.д.
ferumflex
Full Member
***
Offline Offline

Activity: 256
Merit: 102


View Profile WWW
September 09, 2017, 08:43:30 PM
 #15

А можно ли, чтобы токен эмитировался бесконечно при выполнении определённых условий?
Допустим, на контракт кинули 1ETH - он выпустил и кинул отправителю  1 токен, кинули 100eth - контракт создал ещё 100 токенов и выслал, и так бессрочно..
можно. только думаю биржа не захочет размещать такой токен у себя
ferumflex
Full Member
***
Offline Offline

Activity: 256
Merit: 102


View Profile WWW
September 09, 2017, 09:35:03 PM
 #16

нормальная биржа вроде того же битрекса, полоникса.

ferumflex,  подскажите, как можно реализовать "права администратора" в смарт контракте?
Вот он запущен, висит себе пассивно, ждёт команд. Кто-то кинул в него эфиром, приказал сработать, контракт сделал.
А что если этот контракт должен для кого-то определённого делать больше, чем для всех?
Например, есть такой токен в единичном экземпляре, и владелец этого токена имеет эксклюзивные права на некоторые команды.,

Наследовать свой контракт от этого например.
https://github.com/OpenZeppelin/zeppelin-solidity/blob/master/contracts/ownership/Ownable.sol
Потом можно выставлять модификатор к функции onlyOwner и только владелец контракта сможет вызвать эту функцию
valutov
Full Member
***
Offline Offline

Activity: 139
Merit: 100


View Profile
September 09, 2017, 09:57:32 PM
 #17

А можно ли, чтобы токен эмитировался бесконечно при выполнении определённых условий?
Допустим, на контракт кинули 1ETH - он выпустил и кинул отправителю  1 токен, кинули 100eth - контракт создал ещё 100 токенов и выслал, и так бессрочно..
можно. только думаю биржа не захочет размещать такой токен у себя

Adshares с бесконечной эмиссией.
ferumflex
Full Member
***
Offline Offline

Activity: 256
Merit: 102


View Profile WWW
September 09, 2017, 10:20:36 PM
 #18

да owner - это конкретный адрес. При создании контракта выставляется на владельца. Есть функция transferOwnership
ShDenis (OP)
Full Member
***
Offline Offline

Activity: 313
Merit: 103



View Profile
September 10, 2017, 08:55:03 AM
 #19

contract Owned {
    address public     owner;                                                   // администратор
    function Owned() {                                                          // конструктор
        owner = msg.sender;
    }
    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }
    function transferOwnership(address newOwner) onlyOwner {
        owner = newOwner;
    }
}
contract Token is Owned{                                                     

}

простой контракт для получения адреса владельца токена (владелец же будет заливать его в сеть, => msg.sender будет адресом владельца.) transferOwnership позволяет сменить владельца, но сделать это может только текущий владелец. Далее наследуем этот класс в классе токена и пользуемся модификатором onlyOwner для тех функций, которые будут разрешены только для администрации. Это запретит к ним доступ остальных.
valutov
Full Member
***
Offline Offline

Activity: 139
Merit: 100


View Profile
September 10, 2017, 10:56:14 AM
 #20

owner-ов может быть несколько:

modifier onlyOwner() {
      if (msg.sender != owner1 && msg.sender != owner2) {
        throw;
      }
      _;
    }
   
    // constructor
    function Token (address _owner1, address _owner2)
    {
        owner1 = _owner1;
        owner2 = _owner2;
    }
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!