Оба они являются «фальшивыми блокчейнами» для целей разработки. Оба рекомендуются разными людьми как хороший инструмент при разработке в трюфеле. И я даже думаю, что оба разрабатываются одними и теми же людьми.
Но мне действительно трудно найти, какой из них использовать. В этом руководстве утверждается, что EtherSim заменит testrpc, но указанный репозиторий ссылается на testrpc. Также есть еще один репозиторий EtherSim. Все они, похоже, были обновлены за последнюю неделю.
Действительно граница :)
РЕДАКТИРОВАТЬ: Недостаточно репутации, чтобы публиковать соответствующие ссылки… Двух из них должно хватить. Погуглите EtherSim 0.3.0, чтобы найти второй упомянутый мной репозиторий EtherSim.
Я автор ethereumjs-testrpc и проделал большую часть работы над Ethersim в первые дни его существования, о чем свидетельствует этот коммит , следующие коммиты и этот неслитный PR . Ethersim был запущен Юрием Матиасом в качестве альтернативы eth-testrpc , также написанной в основном мной, адаптированной на основе сценария Стефана Джорджа.eth-testrpc
было первым доступным приложением testrpc, но оно было написано на Python и не имело многих функций. Поскольку он был написан на Python, его было трудно поддерживать и устанавливать (по крайней мере, для меня), а поскольку у меня не было большого опыта работы с Python, я не мог устранить чрезвычайно досадную ошибку; к сожалению, он умрет из-за состояния гонки при большой нагрузке. Это стало чрезвычайно проблематичным, когда я готовился к демонстрации приложения для Devcon 1 в 2015 году, поскольку eth-testrpc не мог надежно запускать мои модульные тесты, задерживая разработку. В приступе ярости я решил переписать eth-testrpc на Javascript, и тогда я нашел Ethersim.
Ethersim был ужасно незаконченным, когда я его нашел, не поддерживая достаточное количество запросов для модульных тестов, упомянутых выше. После нескольких поздних ночей я полностью переписал Ethersim, сохранив файловую структуру Юрия, но переписав внутренности для лучшей интеграции с ethereumjs-vm . В конце концов Юрий принял этот PR, и с тех пор Ethersim работает против этого переписывания.
Продолжая делать Ethersim лучше, я представил этот PR , упомянутый выше. Этот PR улучшил обработку блоков и включал два специальных запроса RPC ( evm_snapshot
и evm_revert
), которые могли бы значительно ускорить модульные тесты и, в случае слияния, давали бы Ethersim возможность сделать снимок состояния цепочки в определенном блоке и вернуться к этому состоянию цепочки позже.
К сожалению, этот PR так и не был объединен. Со временем сообщество ethereumjs решило, что хочет использовать один из этих проектов, либо Ethersim, master
либо мои изменения в этом новом PR, поскольку они были тесно связаны с ethereumjs-vm. Обсудив это, они решили использовать мой форк, так как в то время он, похоже, активно развивался.
После этого форка их набор функций сильно разошелся: ethereumjs-testrpc потребляет большинство, если не все функции Ethersim (конечно, я необъективен, но настоятельно рекомендую вам сравнить их README ). На момент написания этой статьи в TestRPC существовали следующие функции, которых нет в Ethersim:
geth
), полезно для широкого спектра действий по анализу и написанию сценариев.miner_start
и miner_stop
, geth
также полезно для сценариев и модульных тестов.Насколько я могу судить из README , у Ethersim нет функций, которые не поддерживает testrpc.
Таким образом, TL;DR , как бы предвзято это ни звучало, заключается в том, что ethereumjs-testrpc — это более полнофункциональный симулятор блокчейна, который имеет более широкий спектр применений. У них обоих одни и те же цели, но ethereumjs-testrpc развивается более активно.
РЕДАКТИРОВАТЬ: Каким-то образом я пропустил ответ Карла, прежде чем ответить себе, не знаю, как. Это, по крайней мере, дает историю их развития и почему произошел форк.
Проблема здесь в том, что существует множество репозиториев под названием EtherSim и TestRPC, многие из которых устарели. Когда вы говорите EtherSim и TestRPC в настоящее время, вы, вероятно, имеете в виду один из этих двух репозиториев:
Разница между ними только в том, насколько хорошо они обслуживаются. На момент написания ethereumjs/testrpc
был обновлен не так давно, как iurimatias/EtherSim
.
Просто используйте самую полную и хорошо поддерживаемую ноду Javascript Ethereum, и все будет хорошо. Сейчас это ethereumjs/testprc.
Примечание. Похоже, что ребята из Nexusdev работают над EtherSim
гораздо более современной вилкой. https://github.com/nexusdev/EtherSim
Если все обстоит так, как было пару месяцев назад, testRPC заменялся Ethersim (или, может быть, они нашли применение для их сосуществования). В любом случае, я знаю об Ethersim больше, чем о testRPC. В настоящее время Ethersim создает программу искусственного блокчейна и запускает код вашего контракта через свой блокчейн (при правильной настройке), а затем позволяет вам запускать тесты на выходе из mocha.js... на самом деле это довольно круто. В любом случае... почти все основные фреймворки Ethereum, насколько мне известно, используют Ethersim... Truffle, Embark, Dapple используют его. Очень полезный инструмент.
q9f