Bitcoin Forum
May 06, 2024, 11:08:21 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Помогите!  (Read 382 times)
igda23gh (OP)
Jr. Member
*
Offline Offline

Activity: 75
Merit: 1


View Profile
November 10, 2020, 04:11:54 PM
 #1

Приветствую. Увлекся программированием. Познания у меня в этом вопросе слабые и разрозненные. Осилил написание простенького смарт-контракта ETH. Теперь хотелось бы попробовать сделать простенькую HTML страничку с помощью которой можно было бы взаимодействовать со смарт-контрактом.

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

Сколько не бился, в реализации так и не продвинулся. Знаю, что реализовать это нужно как то с web3js. Но примеров готового кода для такого решения нигде не нашел.

Буду благодарен тем кто откликнется и сможет написать в ветку такой код. А то я так и не пойму принцип его создания...

Заранее спасибо, тем кто откликнется.
1715036901
Hero Member
*
Offline Offline

Posts: 1715036901

View Profile Personal Message (Offline)

Ignore
1715036901
Reply with quote  #2

1715036901
Report to moderator
I HATE TABLES I HATE TABLES I HA(╯°□°)╯︵ ┻━┻ TABLES I HATE TABLES I HATE TABLES
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
~DefaultTrust
Copper Member
Sr. Member
****
Offline Offline

Activity: 1554
Merit: 487

Stop the war!


View Profile
November 11, 2020, 05:28:49 AM
 #2

Чистый браузер это песочница, из нее во взрослый мир блокчейнов не пускают.
Так что если очень хочется из песочницы браузера пообщаться со взрослыми с блокчейном, то нужен посредник - папа или мама плагин метамаск например. Этот посредник должен уметь принимать сообщения от детей скриптов из песочницы браузера чтобы потом переводить эти сообщения на язык взрослых блокчейнов.
Таким образом, ваша задача состоит сейчас в том, чтобы научиться говорить хотя бы на том уровне, чтобы вас понимали родные папа и мама прочитать документацию к АПИ функциям метамаска которые обеспечивают интерфес между браузерными скриптами и блокчейном

Do not trust bitcointalk fascists: leonello; Snork1979; ivan1975
bomj
Sr. Member
****
Offline Offline

Activity: 1337
Merit: 288


0xbt


View Profile WWW
November 11, 2020, 11:00:38 PM
 #3

В принципе я могу вам поспособствовать.
Но здесь уже нужно использовать js.
Я так же как и вы начинал с нуля и до сих пор не соображаю в js, так что до всего дохожу эмпирически.
Попробуйте на примере https://ads.0xbt.net самостоятельно разобраться, да потратите время, но иначе так и застрянете в ж....)))
Ну уж если не сообразите, то кидайте свой контракт и как будет время, сделаю вам вашу страничку/dapp)))

igda23gh (OP)
Jr. Member
*
Offline Offline

Activity: 75
Merit: 1


View Profile
November 12, 2020, 11:02:35 AM
Last edit: November 12, 2020, 04:02:19 PM by Xal0lex
 #4

Чистый браузер это песочница, из нее во взрослый мир блокчейнов не пускают.
Так что если очень хочется из песочницы браузера пообщаться со взрослыми с блокчейном, то нужен посредник - папа или мама плагин метамаск например. Этот посредник должен уметь принимать сообщения от детей скриптов из песочницы браузера чтобы потом переводить эти сообщения на язык взрослых блокчейнов.
Таким образом, ваша задача состоит сейчас в том, чтобы научиться говорить хотя бы на том уровне, чтобы вас понимали родные папа и мама прочитать документацию к АПИ функциям метамаска которые обеспечивают интерфес между браузерными скриптами и блокчейном

Спасибо за ответ. Я в курсе этой теоретической части. Вся загвоздка в том, что у меня не хватает знаний для реализации. В случае со смарт-контрактами, можно изучить Solidity на начальном уровне и просмотрев коды чужих контрактов разобраться как реализовать что-то своё. Но в моем случае, примеры готового кода посмотреть просто негде. Я не нашел ничего, что при нажатии на кнопку (допустим регистрации) обращалось бы к метамаску и позволяло через поля на сайте отправлять инфу в блокчейн.

В принципе я могу вам поспособствовать.
Но здесь уже нужно использовать js.
Я так же как и вы начинал с нуля и до сих пор не соображаю в js, так что до всего дохожу эмпирически.
Попробуйте на примере https://ads.0xbt.net самостоятельно разобраться, да потратите время, но иначе так и застрянете в ж....)))
Ну уж если не сообразите, то кидайте свой контракт и как будет время, сделаю вам вашу страничку/dapp)))

Solidity  во многом похож на Js. Я тоже знаю его довольно поверхностно, но в строках кода ориентироваться могу. Эмпирически я дошел до понимания solidity. Писал и читал, пока однажды меня просто не осенило, что перед глазами теперь вполне понятные команды, а не набор символов. Вообще жалею, что еще в детстве не начал изучать программирование).


Спасибо за ссылку. Я внимательно изучу всё. Но если у вас есть ссылки на какие-нибудь примеры реализации чего-то пообного, то буду рад, если вы поделитесь)
bomj
Sr. Member
****
Offline Offline

Activity: 1337
Merit: 288


0xbt


View Profile WWW
November 13, 2020, 06:17:34 PM
Last edit: November 13, 2020, 09:42:36 PM by bomj
Merited by klarki (2)
 #5

Попытаюсь пояснить на примере.
Откройте код страницы:
view-source:https://ads.0xbt.net/ads.html
Вы увидите там скрипт запроса к сети эфира:
Code:
<script>
    var web3 = new Web3(new Web3.providers.HttpProvider("https://node3.web3api.com"));
    // var web3 = new Web3(new Web3.providers.HttpProvider("https://mainnet.infura.io/v3/80f1c00345214da4bdbc4d02f35fb265"));
  
    var version = web3.version.api;
    console.log(version);
    var MyContract;
    var myContractInstance;
    try {
        MyContract = web3.eth.contract([{"constant":true,"inputs":[],"name":"getAds","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newAds","type":"string"}],"name":"setAds","outputs":[],"payable":true,"stateMutability":"payable","type":"function"}]);
        myContractInstance = MyContract.at("0x30783ee8fdf264f59a1846b24dbfc73ab4aa7d18");
    }
..............т.д...........................
Это применительно к данному контракту, адаптируйте под свой.

Далее - кнопка запроса:
Code:
<button type='button' id='btn_5' class="knopka" onclick="ethcall2('getAds', 'input_5','myanswer_5','string', '|string', 'btn_5');"><b><span style="color:white;">Get <i class="fa fa-btc"></i> Ads</span></b></button>
адаптируйте

Теперь подключение к Метамаск и отправление транзакций(в примере сеть бинанс):
view-source:https://ads.0xbt.net/ads-bsc.html
view-source:https://ads.0xbt.net/dapp.html
Те же манипуляции........)))

igda23gh (OP)
Jr. Member
*
Offline Offline

Activity: 75
Merit: 1


View Profile
November 14, 2020, 05:47:03 PM
 #6

Попытаюсь пояснить на примере.
Откройте код страницы:
view-source:https://ads.0xbt.net/ads.html
Вы увидите там скрипт запроса к сети эфира:
Code:
<script>
    var web3 = new Web3(new Web3.providers.HttpProvider("https://node3.web3api.com"));
    // var web3 = new Web3(new Web3.providers.HttpProvider("https://mainnet.infura.io/v3/80f1c00345214da4bdbc4d02f35fb265"));
  
    var version = web3.version.api;
    console.log(version);
    var MyContract;
    var myContractInstance;
    try {
        MyContract = web3.eth.contract([{"constant":true,"inputs":[],"name":"getAds","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newAds","type":"string"}],"name":"setAds","outputs":[],"payable":true,"stateMutability":"payable","type":"function"}]);
        myContractInstance = MyContract.at("0x30783ee8fdf264f59a1846b24dbfc73ab4aa7d18");
    }
..............т.д...........................
Это применительно к данному контракту, адаптируйте под свой.

Далее - кнопка запроса:
Code:
<button type='button' id='btn_5' class="knopka" onclick="ethcall2('getAds', 'input_5','myanswer_5','string', '|string', 'btn_5');"><b><span style="color:white;">Get <i class="fa fa-btc"></i> Ads</span></b></button>
адаптируйте

Теперь подключение к Метамаск и отправление транзакций(в примере сеть бинанс):
view-source:https://ads.0xbt.net/ads-bsc.html
view-source:https://ads.0xbt.net/dapp.html
Те же манипуляции........)))


Я не могу понять как эту проблему обойти. Пишу через VCode Studio. Юзаю Node js.
В IDE проблемы нет, но со стороны клиента - такая ошибка.
Насколько я понял, метод require не используется браузерами. Но как мне тогда позднее использовать этот код на страничке сайта? И как проверять работоспособность сейчас.

bomj
Sr. Member
****
Offline Offline

Activity: 1337
Merit: 288


0xbt


View Profile WWW
November 18, 2020, 05:25:10 PM
 #7

Если не получается, скиньте адрес контракта с кодом.

gettocat
Copper Member
Jr. Member
*
Offline Offline

Activity: 36
Merit: 11


View Profile WWW
November 22, 2020, 05:44:48 PM
 #8



Я не могу понять как эту проблему обойти. Пишу через VCode Studio. Юзаю Node js.
В IDE проблемы нет, но со стороны клиента - такая ошибка.
Насколько я понял, метод require не используется браузерами. Но как мне тогда позднее использовать этот код на страничке сайта? И как проверять работоспособность сейчас.



В браузерах require не используется, там нужно явно подключать скрипты к странице. Require это для ноды. На примере выше там скрипт явно подключается

Code:
<script type="text/javascript" src="https://etherscan.io/jss/web3.min.js?v=0.20.6"></script>

Добавьте эту строку в хеадер и Web3 окажется существующим. А вообще лучше почитать документацию к Web3, там всё написано должно быть.
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!