Bitcoin Forum
May 07, 2024, 05:01:11 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Получение курсов USD, RUB, EUR в смарт-контракт  (Read 655 times)
paramedic (OP)
Member
**
Offline Offline

Activity: 134
Merit: 10


View Profile
October 26, 2017, 04:32:05 PM
Last edit: October 26, 2017, 09:11:52 PM by paramedic
 #1

Добрый день, господа разработчики


В настоящее время мы делаем сервис, который позволит вашим смарт-контрактам получать курсы криптовалют к фиатным валютам в рамках одной транзакции. Например, курс ETH/USD или BTC/RUB и т.д.

Для чего это нужно?
Например, для проведения ICO где стоимость токена привязана к фиату

Мы бы хотели предложить вам потестировать данный сервис

Мы создали смарт-контракт в тестовой сети rinkeby, который возвращает курс ETH/USD.
Курс обновляется приблизительно 1 раз в 3-7 минут на основании API Etherscan

Ниже расположен пример смарт-контракта, обращающийся к нашему сервису:


Code:
pragma solidity ^0.4.13;

contract AbstractDRate {
    
    function getUSDRate() payable returns(uint);
}

contract Test2DRate {
    uint public USDRate;
    
    
  function test() payable returns(uint) {
    address  addressOfDRate = 0x0F196688e8289ceB6f3cF0A3F3e67f1e2B0F5E55;
      
    USDRate = 0;
    
    AbstractDRate my_DRate;  
    my_DRate = AbstractDRate(addressOfDRate);
    USDRate = my_DRate.getUSDRate.value(msg.value)(); // 0.01 ETH minimum
  }
}


В ваш смарт-контракт вам необходимо добавить абстрактный класс контракта:

Code:
contract AbstractDRate { 
 
    function getUSDRate() payable returns(uint);
}

Далее в коде вашего контракта вы создаете объект:

Code:
AbstractDRate my_DRate;  
my_DRate = AbstractDRate(addressOfDRate);
   
где addressOfDRate это адрес нашего контракта в тестовой сети rinkeby (0x0F196688e8289ceB6f3cF0A3F3e67f1e2B0F5E55)

Далее вы можете обращаться к методу getUSDRate, который будет возвращать вам курс ETH/USD в центах
Вызов данного метода требует оплаты 0.01 ETH (тестовый эфир в rinkeby)

То есть вся строка вызова выглядит следующим образом:

Code:
my_DRate.getUSDRate.value(msg.value)();

где msg.value это сумма в ETH, которая будет отправлена. Её вам надо передать при вызове функции test данного смарт-контракта


Хотелось бы услышать ваши комментарии и замечания, а также интересен ли вам подобный сервис в основной сети Ethereum?

Whoever mines the block which ends up containing your transaction will get its fee.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1715101271
Hero Member
*
Offline Offline

Posts: 1715101271

View Profile Personal Message (Offline)

Ignore
1715101271
Reply with quote  #2

1715101271
Report to moderator
1715101271
Hero Member
*
Offline Offline

Posts: 1715101271

View Profile Personal Message (Offline)

Ignore
1715101271
Reply with quote  #2

1715101271
Report to moderator
liafloor
Full Member
***
Offline Offline

Activity: 364
Merit: 102


[Proof-of-contract protocol]


View Profile
October 26, 2017, 05:41:14 PM
 #2

Для чего это нужно?
Например, для проведения ICO где стоимость токена привязана к фиату
   ----- пока такого не встречал, чтобы цена во время ICO привязывалась к фиату. Первична всегда крипта - например, за 1 эфир дают 400 каких-то токенов. Хотя где-то может и проводят подобные ICO, за всем не уследишь)

paramedic (OP)
Member
**
Offline Offline

Activity: 134
Merit: 10


View Profile
October 26, 2017, 06:24:29 PM
 #3

пока такого не встречал, чтобы цена во время ICO привязывалась к фиату. Первична всегда крипта - например, за 1 эфир дают 400 каких-то токенов. Хотя где-то может и проводят подобные ICO, за всем не уследишь)

Мы такой сервис и сделали, потому что у заказчиков смарт-контрактов в последнее время наметилась тенденция указывать стоимость токена в USD или RUB. Это сделано чтобы, избежать высокой волатильности криптовалют, особенно если ICO проводится на длинной дистанции.

Paymon
Full Member
***
Offline Offline

Activity: 378
Merit: 101



View Profile
October 28, 2017, 11:30:42 AM
 #4

пока такого не встречал, чтобы цена во время ICO привязывалась к фиату. Первична всегда крипта - например, за 1 эфир дают 400 каких-то токенов. Хотя где-то может и проводят подобные ICO, за всем не уследишь)

Мы такой сервис и сделали, потому что у заказчиков смарт-контрактов в последнее время наметилась тенденция указывать стоимость токена в USD или RUB. Это сделано чтобы, избежать высокой волатильности криптовалют, особенно если ICO проводится на длинной дистанции.

Хм, интересно. Вероятно протестим, спасибо.
paramedic (OP)
Member
**
Offline Offline

Activity: 134
Merit: 10


View Profile
October 30, 2017, 06:19:44 PM
 #5


Хм, интересно. Вероятно протестим, спасибо.

Если есть вопросы по использованию, задавайте. С радостью поможем!

satrum
Full Member
***
Offline Offline

Activity: 252
Merit: 101



View Profile
October 31, 2017, 06:07:38 AM
 #6

Если хотите знать про ICO где такое нужно - это наш проект sintez.global. На втором этапе смарт-контракт учитывает цену токена за предудущий период, сначала в эфирах, потом когда он появиться на бирже - в курсах к баксу. Так что вы полезную штуку делаете - подтверждаю. Только вот ваш оракул если он один - является точкой отказа, нужно создавать сеть оракулов, построенную тоже на децентрализованных принципах, правда консенсус конечно не на блокчейне придеться пилить.
satrum
Full Member
***
Offline Offline

Activity: 252
Merit: 101



View Profile
October 31, 2017, 06:08:24 AM
 #7

А и да еще гляньте в сторону проекта LINK - они тоже хотят котировки и всякие внешние данные в блокчейн писать.
paramedic (OP)
Member
**
Offline Offline

Activity: 134
Merit: 10


View Profile
October 31, 2017, 03:50:49 PM
 #8

А и да еще гляньте в сторону проекта LINK - они тоже хотят котировки и всякие внешние данные в блокчейн писать.

Вы говорите про ChainLink?

Cryptomania12
Full Member
***
Offline Offline

Activity: 490
Merit: 103



View Profile
November 01, 2017, 01:24:20 AM
 #9

Для чего это нужно?
Например, для проведения ICO где стоимость токена привязана к фиату
   ----- пока такого не встречал, чтобы цена во время ICO привязывалась к фиату. Первична всегда крипта - например, за 1 эфир дают 400 каких-то токенов. Хотя где-то может и проводят подобные ICO, за всем не уследишь)

были такие проекты бетон, точно видел и не один. Да взять тот же red pulse, за NEO в эквиваленте 50$ давали 1000 токенов.
Coin-1
Legendary
*
Offline Offline

Activity: 2436
Merit: 2174



View Profile
November 01, 2017, 03:57:48 AM
 #10

Code:
my_DRate.getUSDRate.value(msg.value)();
Лишь бы команды выдавали реальные и актуальные значения, а не выдуманные или устаревшие.
vasay.ru
Newbie
*
Offline Offline

Activity: 1
Merit: 0


View Profile
November 01, 2017, 05:08:05 PM
 #11

Лишь бы команды выдавали реальные и актуальные значения, а не выдуманные или устаревшие.

На данный момент мы думаем над способом подтверждения верности данных.

Пока, это видится как создание некоего аналога PageSigner ( https://tlsnotary.org/pagesigner.html ), через который бы шло обращение нашего сервиса к API бирж, являющихся источником данных о курсах.

TRexx
Member
**
Offline Offline

Activity: 183
Merit: 10


View Profile
November 02, 2017, 10:16:48 PM
 #12

Для чего это нужно?
Например, для проведения ICO где стоимость токена привязана к фиату
   ----- пока такого не встречал, чтобы цена во время ICO привязывалась к фиату. Первична всегда крипта - например, за 1 эфир дают 400 каких-то токенов. Хотя где-то может и проводят подобные ICO, за всем не уследишь)

были такие проекты бетон, точно видел и не один. Да взять тот же red pulse, за NEO в эквиваленте 50$ давали 1000 токенов.

 Даже к кубометру песка видел привязку  Grin
paramedic (OP)
Member
**
Offline Offline

Activity: 134
Merit: 10


View Profile
November 03, 2017, 01:21:04 PM
 #13

Лишь бы команды выдавали реальные и актуальные значения, а не выдуманные или устаревшие.

Данные о курсе ETH/USD сейчас берутся с Etherscan

deh222
Copper Member
Jr. Member
*
Offline Offline

Activity: 103
Merit: 1


View Profile WWW
February 23, 2018, 12:49:37 PM
 #14

Добрый день. Очень интересно. Такой вопрос. Мы хотим привязать свои токены к Usd (не ICO) взаиморасчеты. Подойдет?


Добрый день, господа разработчики


В настоящее время мы делаем сервис, который позволит вашим смарт-контрактам получать курсы криптовалют к фиатным валютам в рамках одной транзакции. Например, курс ETH/USD или BTC/RUB и т.д.

Для чего это нужно?
Например, для проведения ICO где стоимость токена привязана к фиату

Мы бы хотели предложить вам потестировать данный сервис

Мы создали смарт-контракт в тестовой сети rinkeby, который возвращает курс ETH/USD.
Курс обновляется приблизительно 1 раз в 3-7 минут на основании API Etherscan

Ниже расположен пример смарт-контракта, обращающийся к нашему сервису:


Code:
pragma solidity ^0.4.13;

contract AbstractDRate {
    
    function getUSDRate() payable returns(uint);
}

contract Test2DRate {
    uint public USDRate;
    
    
  function test() payable returns(uint) {
    address  addressOfDRate = 0x0F196688e8289ceB6f3cF0A3F3e67f1e2B0F5E55;
      
    USDRate = 0;
    
    AbstractDRate my_DRate;  
    my_DRate = AbstractDRate(addressOfDRate);
    USDRate = my_DRate.getUSDRate.value(msg.value)(); // 0.01 ETH minimum
  }
}


В ваш смарт-контракт вам необходимо добавить абстрактный класс контракта:

Code:
contract AbstractDRate { 
 
    function getUSDRate() payable returns(uint);
}

Далее в коде вашего контракта вы создаете объект:

Code:
AbstractDRate my_DRate;  
my_DRate = AbstractDRate(addressOfDRate);
   
где addressOfDRate это адрес нашего контракта в тестовой сети rinkeby (0x0F196688e8289ceB6f3cF0A3F3e67f1e2B0F5E55)

Далее вы можете обращаться к методу getUSDRate, который будет возвращать вам курс ETH/USD в центах
Вызов данного метода требует оплаты 0.01 ETH (тестовый эфир в rinkeby)

То есть вся строка вызова выглядит следующим образом:

Code:
my_DRate.getUSDRate.value(msg.value)();

где msg.value это сумма в ETH, которая будет отправлена. Её вам надо передать при вызове функции test данного смарт-контракта


Хотелось бы услышать ваши комментарии и замечания, а также интересен ли вам подобный сервис в основной сети Ethereum?


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!