Bitcoin Forum

Local => Кодеры => Topic started by: yaroslav195 on October 11, 2017, 07:31:21 PM



Title: Вопрос по смарт-контрактам
Post by: yaroslav195 on October 11, 2017, 07:31:21 PM
Каким образом происходит ввод информации в смарт-контракт? (Только начал изучать их)
Вот как они работают - я понял, а вот как в них вводить информацию (например в mapping) - не понял, объясните, пожалуйста ???


Title: Re: Вопрос по смарт-контрактам
Post by: ferumflex on October 12, 2017, 12:53:04 PM
Вы вызываете функцию смартконтракта, и передаете туда параметры(данные). Смартконтракт их как то записывает в mapping или еще куда то.


Title: Re: Вопрос по смарт-контрактам
Post by: yaroslav195 on October 12, 2017, 02:39:45 PM
Вы вызываете функцию смартконтракта, и передаете туда параметры(данные). Смартконтракт их как то записывает в mapping или еще куда то.
Окей, а такой вопрос: Могу ли я вызывать из смарт-контракта только 1 фунцкию? (Если их там несколько)


Title: Re: Вопрос по смарт-контрактам
Post by: aleks_raiden on October 13, 2017, 08:54:58 AM
Да, вы вызиваете только ту функцию, что вам нужно


Title: Re: Вопрос по смарт-контрактам
Post by: yaroslav195 on October 13, 2017, 01:08:14 PM
Да, вы вызиваете только ту функцию, что вам нужно

ОКе,  спасибо за ответы!


Title: Re: Вопрос по смарт-контрактам
Post by: Jaga-Jaga on October 17, 2017, 09:08:24 PM
Вы вызываете функцию смартконтракта, и передаете туда параметры(данные). Смартконтракт их как то записывает в mapping или еще куда то.
Окей, а такой вопрос: Могу ли я вызывать из смарт-контракта только 1 фунцкию? (Если их там несколько)
Из смартк контракта можно вызвать любую public функцию сколько угодно раз, только за вызов функции прийдется заплатить. Еще есть момент что уже внутри самой функции может стоять проверка на то кто ее вызывает и если у вас нет права вызывать эту функцию то она не отработает.


Title: Re: Вопрос по смарт-контрактам
Post by: ShDenis on October 18, 2017, 05:26:35 AM
Вы вызываете функцию смартконтракта, и передаете туда параметры(данные). Смартконтракт их как то записывает в mapping или еще куда то.
Окей, а такой вопрос: Могу ли я вызывать из смарт-контракта только 1 фунцкию? (Если их там несколько)
Из смартк контракта можно вызвать любую public функцию сколько угодно раз, только за вызов функции прийдется заплатить. Еще есть момент что уже внутри самой функции может стоять проверка на то кто ее вызывает и если у вас нет права вызывать эту функцию то она не отработает.

не за все! если функция меняет состояние блокчейна, то да, нужно платить. Если просто считывает информацию (constant), то платить не нужно будет.


Title: Re: Вопрос по смарт-контрактам
Post by: Jaga-Jaga on October 24, 2017, 07:08:00 PM
Вы вызываете функцию смартконтракта, и передаете туда параметры(данные). Смартконтракт их как то записывает в mapping или еще куда то.
Окей, а такой вопрос: Могу ли я вызывать из смарт-контракта только 1 фунцкию? (Если их там несколько)
Из смартк контракта можно вызвать любую public функцию сколько угодно раз, только за вызов функции прийдется заплатить. Еще есть момент что уже внутри самой функции может стоять проверка на то кто ее вызывает и если у вас нет права вызывать эту функцию то она не отработает.

не за все! если функция меняет состояние блокчейна, то да, нужно платить. Если просто считывает информацию (constant), то платить не нужно будет.
А как же борьба с бесконечными циклами? Если будет возможность бесплатно вызывать функции с бесконечными циклами то эфир можно будет очень быстро похоронить.


Title: Re: Вопрос по смарт-контрактам
Post by: ShDenis on October 25, 2017, 06:11:33 AM
Вы вызываете функцию смартконтракта, и передаете туда параметры(данные). Смартконтракт их как то записывает в mapping или еще куда то.
Окей, а такой вопрос: Могу ли я вызывать из смарт-контракта только 1 фунцкию? (Если их там несколько)
Из смартк контракта можно вызвать любую public функцию сколько угодно раз, только за вызов функции прийдется заплатить. Еще есть момент что уже внутри самой функции может стоять проверка на то кто ее вызывает и если у вас нет права вызывать эту функцию то она не отработает.

не за все! если функция меняет состояние блокчейна, то да, нужно платить. Если просто считывает информацию (constant), то платить не нужно будет.
А как же борьба с бесконечными циклами? Если будет возможность бесплатно вызывать функции с бесконечными циклами то эфир можно будет очень быстро похоронить.
Функции чтения не синхронизируются и максимум можгут похоронить одну ноду, на которой запускались. Но, думаю, что защита от такого должна быть предусмотрена, просто не в курсе о ней. Может, при заливке смартконтракта в сеть все констант функции запускаются и evm будет ругаться превышением по газу размера блока. Может ещё что.


Title: Re: Вопрос по смарт-контрактам
Post by: mushroomalert on October 25, 2017, 11:14:16 AM
А как же борьба с бесконечными циклами? Если будет возможность бесплатно вызывать функции с бесконечными циклами то эфир можно будет очень быстро похоронить.

Вызова функции не происходит. Просто происходит чтение состояния контракта в блокчейне


Title: Re: Вопрос по смарт-контрактам
Post by: Jaga-Jaga on October 25, 2017, 07:34:32 PM
Вы вызываете функцию смартконтракта, и передаете туда параметры(данные). Смартконтракт их как то записывает в mapping или еще куда то.
Окей, а такой вопрос: Могу ли я вызывать из смарт-контракта только 1 фунцкию? (Если их там несколько)
Из смартк контракта можно вызвать любую public функцию сколько угодно раз, только за вызов функции прийдется заплатить. Еще есть момент что уже внутри самой функции может стоять проверка на то кто ее вызывает и если у вас нет права вызывать эту функцию то она не отработает.

не за все! если функция меняет состояние блокчейна, то да, нужно платить. Если просто считывает информацию (constant), то платить не нужно будет.
А как же борьба с бесконечными циклами? Если будет возможность бесплатно вызывать функции с бесконечными циклами то эфир можно будет очень быстро похоронить.
Функции чтения не синхронизируются и максимум можгут похоронить одну ноду, на которой запускались. Но, думаю, что защита от такого должна быть предусмотрена, просто не в курсе о ней. Может, при заливке смартконтракта в сеть все констант функции запускаются и evm будет ругаться превышением по газу размера блока. Может ещё что.
Я и говорю про это, что если бы вызов функции был бы бесплатным то можно было бы 1 контрактом хоронить 1 ноду и если в это дело вложить денег, кстати не очень больших, то можно было бы хоронить всю сеть постоянно.


Title: Re: Вопрос по смарт-контрактам
Post by: ShDenis on October 26, 2017, 10:04:34 AM
не, вы не поняли. Такой контракт скорее всего просто не получится задеплоить в ноду из-за превышения по газу. Если же он задеплоен уже, то вызывайте функции чтения сколько хотите, они бесплатны. При деплое контрактов скорее всего gaz за функции чтения также учитывается. После деплоя, при вызове - нет.


Title: Re: Вопрос по смарт-контрактам
Post by: Jaga-Jaga on October 26, 2017, 07:05:20 PM
не, вы не поняли. Такой контракт скорее всего просто не получится задеплоить в ноду из-за превышения по газу. Если же он задеплоен уже, то вызывайте функции чтения сколько хотите, они бесплатны. При деплое контрактов скорее всего gaz за функции чтения также учитывается. После деплоя, при вызове - нет.
Я считал что при деплое контракта берут столько газа сколько надо заплатить за байты которые будет занимать контракт, а при вызове контракта уже будут брать газ за каждую операцию. Кстати за деплой контракта много эфира берут, в эфире это около 0.2 ETH за контракт я ожидал что это гораздо дешевле обходится.


Title: Re: Вопрос по смарт-контрактам
Post by: KAMANDOS on October 27, 2017, 05:53:06 AM
ребят у меня на сайте МЕВ не отображаются токены я ввожу правильно адрес и колли-во запятых,но результата нет,что мне делатЬ? сумма большая


Title: Re: Вопрос по смарт-контрактам
Post by: IrinaBTC on October 27, 2017, 05:54:54 AM
ребят у меня на сайте МЕВ не отображаются токены я ввожу правильно адрес и колли-во запятых,но результата нет,что мне делатЬ? сумма большая
2-3 дня подождите,у меня оторбразились


Title: Re: Вопрос по смарт-контрактам
Post by: Mishman on October 30, 2017, 12:04:33 PM
Quote
Я считал что при деплое контракта берут столько газа сколько надо заплатить за байты которые будет занимать контракт, а при вызове контракта уже будут брать газ за каждую операцию. Кстати за деплой контракта много эфира берут, в эфире это около 0.2 ETH за контракт я ожидал что это гораздо дешевле обходится.

Дороговизна здесь понятие скорее относительное, но видимо это некоторый простой механизм ограничения кол-ва деплоимых контрактов.


Title: Re: Вопрос по смарт-контрактам
Post by: Jaga-Jaga on October 30, 2017, 09:16:34 PM
Quote
Я считал что при деплое контракта берут столько газа сколько надо заплатить за байты которые будет занимать контракт, а при вызове контракта уже будут брать газ за каждую операцию. Кстати за деплой контракта много эфира берут, в эфире это около 0.2 ETH за контракт я ожидал что это гораздо дешевле обходится.

Дороговизна здесь понятие скорее относительное, но видимо это некоторый простой механизм ограничения кол-ва деплоимых контрактов.
Мне кажется что тут все гораздо проще - место в блоке стоит денег а майнерам без разницы транзакции на это место записывать или смарт контракт вот и получается такая дороговизна деплоя контракта в блокчейн, не думаю что майнеры берут за контракт больше чем если бы они на это место сохраняли транзакции в блоке.


Title: Re: Вопрос по смарт-контрактам
Post by: aleks_raiden on October 31, 2017, 05:31:35 AM
Вы еще учтите, что контракт при деплое надо выполнить, и иногда функция инита достаточно вычислимо трудоемкая, ведь она готовит весь контракт. Так что это стоит майнерам намного больше мощности, чем простая транзакция, отсюда и стоимость


Title: Re: Вопрос по смарт-контрактам
Post by: Jaga-Jaga on October 31, 2017, 10:05:15 PM
Вы еще учтите, что контракт при деплое надо выполнить, и иногда функция инита достаточно вычислимо трудоемкая
Вы имеете ввиду вызов конструктора? Да, конструктор вызывается при деплое, но в большинстве контрактов конструктор достаточно простой, где только сохраняется адрес владельца контракта,  нечто вроде: owner = msg.sender.