Bitcoin Forum
November 07, 2024, 07:15:26 PM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Как развернуть контракт в реальную сеть?  (Read 817 times)
x0r2 (OP)
Newbie
*
Offline Offline

Activity: 54
Merit: 0


View Profile
October 16, 2017, 10:02:34 AM
Last edit: October 16, 2017, 12:05:30 PM by x0r2
 #1

Всем привет, подскажите как правильно развернуть контракт в реальную сеть? Использую фреймворк truffle.
Snappsiz
Member
**
Offline Offline

Activity: 112
Merit: 10


View Profile
October 16, 2017, 11:48:00 AM
 #2

Всем привет, подскажите как правильно равзвернуть контракт в реальную сеть? Использую фреймворк truffle.
https://golos.io/ru--blokcheijn/@ferumflex/kak-zapustit-ico-na-ethereum-s-pomoshyu-smart-kontrakta
x0r2 (OP)
Newbie
*
Offline Offline

Activity: 54
Merit: 0


View Profile
October 16, 2017, 12:08:51 PM
 #3

Всем привет, подскажите как правильно равзвернуть контракт в реальную сеть? Использую фреймворк truffle.
https://golos.io/ru--blokcheijn/@ferumflex/kak-zapustit-ico-na-ethereum-s-pomoshyu-smart-kontrakta
Я использую фреймворк truffle, если использовать команду truffle migrate, то мне не понятно как развернуть контракт на реальную сеть. По ссылке выше можно развернуть контракт имея исходный код, truffle компилирует все в папку build, например один контракт внутри может разворачивать другой.
ShDenis
Full Member
***
Offline Offline

Activity: 313
Merit: 103



View Profile
October 16, 2017, 12:45:38 PM
 #4

Всем привет, подскажите как правильно равзвернуть контракт в реальную сеть? Использую фреймворк truffle.
https://golos.io/ru--blokcheijn/@ferumflex/kak-zapustit-ico-na-ethereum-s-pomoshyu-smart-kontrakta
Я использую фреймворк truffle, если использовать команду truffle migrate, то мне не понятно как развернуть контракт на реальную сеть. По ссылке выше можно развернуть контракт имея исходный код, truffle компилирует все в папку build, например один контракт внутри может разворачивать другой.

по теории, вопрос к какой сети подключен truffle. Т.е. сперва нужно поднять локальную ноду с реальным блокчейном и потом указать её трюфелю для выгрузки. Либо, можно попробовать указать чужую с открытым RPC, если есть адрес и порт... Это что касается разворачивания а реальную сеть. А вот с контрактами, которые один другого разворачивает вопрос как-то непонятно задан.
x0r2 (OP)
Newbie
*
Offline Offline

Activity: 54
Merit: 0


View Profile
October 16, 2017, 01:00:25 PM
 #5

Всем привет, подскажите как правильно равзвернуть контракт в реальную сеть? Использую фреймворк truffle.
https://golos.io/ru--blokcheijn/@ferumflex/kak-zapustit-ico-na-ethereum-s-pomoshyu-smart-kontrakta
Я использую фреймворк truffle, если использовать команду truffle migrate, то мне не понятно как развернуть контракт на реальную сеть. По ссылке выше можно развернуть контракт имея исходный код, truffle компилирует все в папку build, например один контракт внутри может разворачивать другой.

по теории, вопрос к какой сети подключен truffle. Т.е. сперва нужно поднять локальную ноду с реальным блокчейном и потом указать её трюфелю для выгрузки. Либо, можно попробовать указать чужую с открытым RPC, если есть адрес и порт... Это что касается разворачивания а реальную сеть. А вот с контрактами, которые один другого разворачивает вопрос как-то непонятно задан.
Правильно ли я понимаю, что мне нужно просто поднять ноду, сконфигурировать на неё truffle и как обычно запустить truffle migrate? Или я могу не поднимать ноду а отправить контракт на ноду infura? Я взял для примера 2 контракта, пример токена и пример краудсейла. Контракт краудсейла внутри себя разворачивает токен через new MyToken(). Если смотреть скрипты деплоя truffle то видно что он первым разворачивает стандартный контракт Migrations, затем краудсейл. Токена я в логах деплоя не увидел, но он видимо разворачивается из краудсейла.
ShDenis
Full Member
***
Offline Offline

Activity: 313
Merit: 103



View Profile
October 16, 2017, 04:31:39 PM
 #6

Правильно ли я понимаю, что мне нужно просто поднять ноду, сконфигурировать на неё truffle и как обычно запустить truffle migrate?
да

Или я могу не поднимать ноду а отправить контракт на ноду infura?

не знаю что за infura, но наверное да, если на ней запущен RPC и у вас есть хост и порт и не будет проблем достучаться.

Я взял для примера 2 контракта, пример токена и пример краудсейла. Контракт краудсейла внутри себя разворачивает токен через new MyToken(). Если смотреть скрипты деплоя truffle то видно что он первым разворачивает стандартный контракт Migrations, затем краудсейл. Токена я в логах деплоя не увидел, но он видимо разворачивается из краудсейла.

скрипты деплоя, это те что в папке migrations? в них первым деплоится migrations.sol (стандартный для трюфеля) и затем деплоятся все необходимые самописные контракты. Что вы там должны были увидеть в деплоях, зависит от того, что у вас было изначально (создано трюфелем покоманде truffle init). Необходимо лишнее убрать и оставить только то, что вам нужно. Если вы деплоите контракт, а он в свою очередь создаёт в конструкторе второй контракт, то второй контракт вам деплоить не нужно (по теории, сам сейчас проверять буду, но кажется что так), поскольку в этом случае в блокчейне вторых контрактов у вас должно оказаться два, один из которых нужный, созданный по new MyToken() со ссылкой внутри краудсейла, а второй ненужный, который ни к чему привязан не будет.
x0r2 (OP)
Newbie
*
Offline Offline

Activity: 54
Merit: 0


View Profile
October 16, 2017, 06:04:07 PM
 #7

Спасибо за ответы, понемногу проясняется.

Quote
скрипты деплоя, это те что в папке migrations?

Да

Quote
в них первым деплоится migrations.sol (стандартный для трюфеля)

Можно его не деплоить вообще?

Как мне узнать адрес токена который деплоился краудсейлом?
ShDenis
Full Member
***
Offline Offline

Activity: 313
Merit: 103



View Profile
October 17, 2017, 08:21:11 AM
 #8

migrations.sol не деплоить не пробовал, но вроде как читал что можно. Просто лишитесь части функционала по управлению версиями, вроде как (могу ошибаться). Внутри контракта-создателя обычно сохраняют адрес в параметр (переменную). Далее, если нужно, можно сделать переменную публичной или добавить getter (только для владельца). А ещё в логах можно попробовать поискать (опять таки, по логам сам  не пробовал искать).
verudza
Newbie
*
Offline Offline

Activity: 31
Merit: 0


View Profile
October 17, 2017, 10:08:02 AM
 #9

Разрабатываем смарт-контракты на заказ.

Опытная команда. Аудит безопасности. Консультации по техническому запуску ICO.

Связь: slava(точка)brall(собака)gmail(точка)com

x0r2 (OP)
Newbie
*
Offline Offline

Activity: 54
Merit: 0


View Profile
October 18, 2017, 09:20:22 AM
 #10

Разрабатываем смарт-контракты на заказ.

Опытная команда. Аудит безопасности. Консультации по техническому запуску ICO.

Связь: slava(точка)brall(собака)gmail(точка)com

Судя по вашему статусу на форуме, очень сомнительно, что команда опытная  Smiley

Разработать и сами можем, вопрос был с разверткой через truffle.
x0r2 (OP)
Newbie
*
Offline Offline

Activity: 54
Merit: 0


View Profile
October 18, 2017, 09:31:23 AM
 #11

Настроил truffle на сервер infura, но при разворачивании получаю ошибку:

Code:
Error encountered, bailing. Network state unknown. Review successful transactions manually.
insufficient funds for gas * price + value

Конфиг truffle:

Code:
module.exports = {
    networks: {
        live: {
            provider: new HDWalletProvider('<mnemonic>', 'https://mainnet.infura.io/<infuraKey>'),
            network_id: 1
        }
    }
};

Разворачиваю командой:

Code:
truffle migration --reset --network=live

Мнемоническая фраза проверена, на адресе есть баланс.
x0r2 (OP)
Newbie
*
Offline Offline

Activity: 54
Merit: 0


View Profile
October 18, 2017, 05:51:12 PM
 #12

Пробовал поднять ноду на geth, но тоже потерпел фиаско.

Code:
geth --unlock 0xADDR

Конфиг truffle:

Code:
module.exports = {
    networks: {
        live: {
            from: '0xADDR',
            host: 'localhost',
            port: 8545,
            network_id: '1'
        }
    }
};

Ошибка:

Code:
Error encountered, bailing. Network state unknown. Review successful transactions manually.
Error: exceeds block gas limit
websalamander
Newbie
*
Offline Offline

Activity: 88
Merit: 0


View Profile
October 20, 2017, 10:28:04 AM
 #13

Пробовал поднять ноду на geth, но тоже потерпел фиаско.

Code:
geth --unlock 0xADDR

Конфиг truffle:

Code:
module.exports = {
    networks: {
        live: {
            from: '0xADDR',
            host: 'localhost',
            port: 8545,
            network_id: '1'
        }
    }
};



Ошибка:

Code:
Error encountered, bailing. Network state unknown. Review successful transactions manually.
Error: exceeds block gas limit
Поставьте после network_id: '1' какой-либо лимит(4500000-5000000) gas: - может подхватит...
x0r2 (OP)
Newbie
*
Offline Offline

Activity: 54
Merit: 0


View Profile
October 21, 2017, 12:58:14 PM
 #14

Поставьте после network_id: '1' какой-либо лимит(4500000-5000000) gas: - может подхватит...

Code:
module.exports = {
    networks: {
        live: {
            from: '0xADDR',
            host: 'localhost',
            port: 8545,
            network_id: 1,
            gas:  5000
        }
    }
};

С таким конфигом другая ошибка:

Code:
Error: insufficient funds for gas * price + value
websalamander
Newbie
*
Offline Offline

Activity: 88
Merit: 0


View Profile
October 23, 2017, 05:59:04 AM
 #15

Поставьте после network_id: '1' какой-либо лимит(4500000-5000000) gas: - может подхватит...

Code:
module.exports = {
    networks: {
        live: {
            from: '0xADDR',
            host: 'localhost',
            port: 8545,
            network_id: 1,
            gas:  5000
        }
    }
};

С таким конфигом другая ошибка:

Code:

Error: insufficient funds for gas * price + value
Вы забыли порядки - вот и пишет, что "недостаточно средств" -  почитайте What is Gas?
ShDenis
Full Member
***
Offline Offline

Activity: 313
Merit: 103



View Profile
October 23, 2017, 07:09:49 AM
 #16

Тоже поимел большую проблему с газом при разворачивании конрактов. Вот это вот: exceeds block gas limit может означать, что вы пытаетесь заливая контракты превысить газ, который нужен для всего блока транзакций. Т.е. код большой к заливке.

По-другому, есть стандартный размер блока (можно настраивать, но этого делать не стоит, поскольку будут нестыковки потом с реальной сетью) и он потребляет определённое количество газа (примерно 4 700 000) на своё заполнение.  Я так понял, что (если всё компилируется нормально) выгружая контракт получается только одна транзакция с размером, превышающим по газу возможности блока. Однако, это всё мои догадки, поскольку на подобные вопросы в этой же ветке форума, мне детального разъяснения никто не дал.

п.с.
Мне, в моём случае, например, сейчас придётся не то что бы оптимизировать контракты для уменьшения потребления, а скорее всего придётся отказываться от единоразовой выгрузки всех контрактов при создании основного контракта. Отказываться в пользу ручного создания доп. контрактов системы с их последующим подключением к системе. Т.е. разбивать код на части. Что есть не совсем удобно. Т.е. плохо.
x0r2 (OP)
Newbie
*
Offline Offline

Activity: 54
Merit: 0


View Profile
October 23, 2017, 03:23:19 PM
 #17

Quote
Вы забыли порядки - вот и пишет, что "недостаточно средств" -  почитайте What is Gas?

Geth не давал менять больше 5000, пробовал различные значения.

С Parity вроде завелось, транзакция прошла, но с газом так до конца и не разобрался.
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!