Bitcoin Forum
May 14, 2024, 10:59:20 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Как развернуть контракт в реальную сеть?  (Read 792 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.
Be very wary of relying on JavaScript for security on crypto sites. The site can change the JavaScript at any time unless you take unusual precautions, and browsers are not generally known for their airtight security.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1715684360
Hero Member
*
Offline Offline

Posts: 1715684360

View Profile Personal Message (Offline)

Ignore
1715684360
Reply with quote  #2

1715684360
Report to moderator
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!