Gonka GitHub Mirror · Discussion #989

Gonka Contract Playground — напишите, скомпилируйте, смоделируйте и разверните CosmWasm, не выходя из браузера.

Отдельная страница дискуссии с русским переводом и параллельным режимом RU / Original с точным сопоставлением предложений.

Как пользоваться: включите RU / Original и кликните по предложению — соответствующее предложение в другой колонке доскроллится и подсветится.
Discussion #989

Gonka Contract Playground — напишите, скомпилируйте, смоделируйте и разверните CosmWasm, не выходя из браузера.

Оригинал: Gonka Contract Playground - write, compile, simulate, and deploy CosmWasm without leaving the browser

gonkalabs avatar
gonkalabsАвтор
2026-03-31

Мотивация

Создание смарт-контрактов, как правило, представляет собой боль — она постоянно возникает: вы хотите попробовать идею небольшого контракта, покопаться в чем-то уже развернутом или показать товарищу по команде, как работает сообщение — и в конечном итоге вы жонглируете локальной цепочкой инструментов Rust, wasmd, скриптами и URL-адресами RPC, прежде чем доберетесь до того, «выполняет ли это то, что я думаю?»

Мы уже отправляем gonka.gg (https://gonka.gg) для чтения цепочки и GG Wallet (https://chromewebstore.google.com/detail/gg-wallet/elicodfmaffbndngiifcpmammicgjidd) для подписи. Недостающим звеном была поверхность разработчика, где любой член сообщества мог перейти от идеи к вопросу «что произойдет, если я назову это?» в одном месте, не рассматривая каждый эксперимент как полноценный инфра-проект.

Итак, мы построили Контрактную игровую площадку по адресу gonkalabs.com/playground (https://gonkalabs.com/playground).

Это может быть полная замена вашего производственного конвейера или быстрый цикл обратной связи для обучения, создания прототипов и отладки — особенно для людей, которые плохо знакомы с CosmWasm на Gonka или которые не хотят поддерживать локальную ферму сборки только для того, чтобы что-то попробовать.

Почему это важно для сообщества

  • Нижний барьер: вам не нужна настроенная машина разработчика, чтобы получить сборку Wasm и увидеть ошибки. Это помогает новичкам и всем, кто пользуется ноутбуком, не настроенным для Wasm32.
  • Более безопасное обучение. Моделирование запускается в вашем браузере на основе фиктивной цепочки. Вы можете что-то ломать, воспроизводить сообщения и читать журналы, не тратя бензин и не касаясь основной сети (или даже тестовой сети), пока не захотите.
  • Честная интеграция: когда вы будете готовы, тот же поток может подключить GG Wallet и общаться с реальным RPC/REST через тот же источник, что и сайт, поэтому вам не придется сражаться с CORS или вставлять секреты в случайные инструменты. Все происходит из самого окна браузера.
  • Живая цепочка: вкладка проводника извлекает идентификаторы живого кода и контракты из сети, чтобы вы могли ориентироваться в том, что на самом деле развернуто, а не только в учебных примерах.

Мы используем это внутри себя. Мы надеемся, что она станет ссылкой по умолчанию, когда кто-нибудь спросит: «Как мне попробовать ту или иную идею для реализации контракта на Гонке?»

Кстати, мы использовали его для разработки нашего смарт-контракта для GNS.

Что он делает (высокий уровень)

Путь компиляции: почему удаленно, а не «волшебство во вкладке»

Сборки Rust to Wasm тяжелые. Браузеры — неподходящее место для просмотра полного графика Cargo для каждого пользователя. Поэтому мы запускаем небольшой сервис компиляции рядом с сайтом: ваш код поступает, оптимизированный Wasm возвращается, и вы все равно получаете прозрачные логи, когда что-то выходит из строя.

Этот компромисс является намеренным: сообщество получает воспроизводимые сборки на нашей закрепленной цепочке инструментов, при этом никто не устанавливает одни и те же версии Rust, Wasm-opt и CosmWasm локально.

Кстати: мы НЕ храним код. Он просто получает рабочий процесс, компилируется и возвращается как артефакты .wasm (удаляется сразу после того, как браузер полностью его получает).

Компилятор доступен по адресу https://github.com/gonkalabs/wasm-cloud-compiler.

Моделирование: быстрая обратная связь без основной сети

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

  • Создайте экземпляр с помощью сообщения JSON и посмотрите эффекты хранения.
  • Пожарное выполнение, запрос и проверка ответов.
  • Перебирайте формы сообщений, прежде чем беспокоиться о газе или высоте блока.

Под капотом это WebAssembly с импортом хостов в стиле CosmWasm (области памяти, db_read/db_write и тому подобное). Он не будет моделировать каждый крайний случай полного узла — и это нормально. Целью является быстрая и безопасная итерация и обучение, а не второй согласованный клиент.

Код SImulator доступен через инструменты разработчика браузера и открыт по адресу https://github.com/gonkalabs/wasm-cloud-compiler/blob/main/simulator.js.

Исследователь и развертывание: та же сеть, та же ментальная модель

Игровая площадка подключена к данным основной сети Gonka через наш прокси-сервер REST/RPC (того же происхождения, что и gonkalabs.com (https://gonkalabs.com), поэтому браузер остается довольным). Вы можете увидеть, что происходит в реальном времени, а затем подключить GG Wallet, когда захотите подключиться к сети.

Если вы создаете dApp, это также простой способ проверить, как развернутый контракт ведет себя при реальной подписи, без написания одноразового сценария.

Открытый исходный код и доверие

Детская площадка находится в репозитории нашего сайта; части, которые имеют значение для доверия и повторного использования (сервис компилятора, симулятор, подключение кошелька), доступны для проверки. Та же философия, что и у GG Wallet (https://github.com/gonkalabs/ggwallet), GNS (https://github.com/gonkalabs/gns), OpenGNK (https://github.com/gonkalabs/opengnk), tx-scanner (https://github.com/gonkalabs/tx-scanner) и rpc-pooler. (https://github.com/gonkalabs/rpc-pooler): покажите работу, позвольте людям разветвляться, сообщать о проблемах и предлагать улучшения.

Чему мы научились при его создании

  • UX-разработчик превосходит количество функций: прокручиваемые журналы, загружаемые файлы Wasm и очевидный текст ошибок экономят больше времени, чем другой флажок, который никто не читает.
  • CosmWasm в браузере требователен: правильный выбор памяти/регионов и импорта — это разница между «недоступно» и «работает»; мы исправили это, поэтому симуляция соответствует ожиданиям контрактов, а не игрушечной виртуальной машине.
  • Сообщество движется быстро: когда Telegram запрашивает фиктивные учетные записи, подсказки по методам или многофайловые проекты, эти запросы обычно верны — мы добавили их, потому что реальные люди столкнулись с проблемой.

Что дальше

Мы будем продолжать сжимать цикл в зависимости от того, что просят разработчики: лучшие подсказки, более богатое моделирование (при этом оно по-прежнему остается честным), более четкая документация для потоков GG Wallet + CosmWasm и все, что поможет большему количеству людей отправлять контракты на Gonka, не увязая в настройке.

Если что-то сбивает с толку или сломано, откройте проблему в наших репозиториях на github.com/gonkalabs (https://github.com/gonkalabs) или свяжитесь с нами в Telegram. Мы отправляем быстро, когда запрос конкретен.

Попробуйте: gonkalabs.com/playground (https://gonkalabs.com/playground) О нас: gonkalabs.com (https://gonkalabs.com) | Проводник: gonka.gg (https://gonka.gg) | GitHub: github.com/gonkalabs (https://github.com/gonkalabs)

Предыдущие публикации Gonka Labs

Gonka Labs: как мы строим инфраструктуру для Gonka (https://github.com/gonka-ai/gonka/discussions/880)

OpenGNK — локальный OpenAI-совместимый прокси-сервер для Gonka (https://github.com/gonka-ai/gonka/discussions/890)

Служба имен Gonka (GNS) — удобочитаемые имена для сети Gonka (https://github.com/gonka-ai/gonka/discussions/898)

Русский перевод
gonkalabs avatar
gonkalabsАвтор
2026-03-31

Мотивация

Создание смарт-контрактов, как правило, представляет собой боль — она постоянно возникает: вы хотите попробовать идею небольшого контракта, покопаться в чем-то уже развернутом или показать товарищу по команде, как работает сообщение — и в конечном итоге вы жонглируете локальной цепочкой инструментов Rust, wasmd, скриптами и URL-адресами RPC, прежде чем доберетесь до того, «выполняет ли это то, что я думаю?»

Мы уже отправляем gonka.gg (https://gonka.gg) для чтения цепочки и GG Wallet (https://chromewebstore.google.com/detail/gg-wallet/elicodfmaffbndngiifcpmammicgjidd) для подписи. Недостающим звеном была поверхность разработчика, где любой член сообщества мог перейти от идеи к вопросу «что произойдет, если я назову это?» в одном месте, не рассматривая каждый эксперимент как полноценный инфра-проект.

Итак, мы построили Контрактную игровую площадку по адресу gonkalabs.com/playground (https://gonkalabs.com/playground).

Это может быть полная замена вашего производственного конвейера или быстрый цикл обратной связи для обучения, создания прототипов и отладки — особенно для людей, которые плохо знакомы с CosmWasm на Gonka или которые не хотят поддерживать локальную ферму сборки только для того, чтобы что-то попробовать.

Почему это важно для сообщества

  • Нижний барьер: вам не нужна настроенная машина разработчика, чтобы получить сборку Wasm и увидеть ошибки. Это помогает новичкам и всем, кто пользуется ноутбуком, не настроенным для Wasm32.
  • Более безопасное обучение. Моделирование запускается в вашем браузере на основе фиктивной цепочки. Вы можете что-то ломать, воспроизводить сообщения и читать журналы, не тратя бензин и не касаясь основной сети (или даже тестовой сети), пока не захотите.
  • Честная интеграция: когда вы будете готовы, тот же поток может подключить GG Wallet и общаться с реальным RPC/REST через тот же источник, что и сайт, поэтому вам не придется сражаться с CORS или вставлять секреты в случайные инструменты. Все происходит из самого окна браузера.
  • Живая цепочка: вкладка проводника извлекает идентификаторы живого кода и контракты из сети, чтобы вы могли ориентироваться в том, что на самом деле развернуто, а не только в учебных примерах.

Мы используем это внутри себя. Мы надеемся, что она станет ссылкой по умолчанию, когда кто-нибудь спросит: «Как мне попробовать ту или иную идею для реализации контракта на Гонке?»

Кстати, мы использовали его для разработки нашего смарт-контракта для GNS.

Что он делает (высокий уровень)

Путь компиляции: почему удаленно, а не «волшебство во вкладке»

Сборки Rust to Wasm тяжелые. Браузеры — неподходящее место для просмотра полного графика Cargo для каждого пользователя. Поэтому мы запускаем небольшой сервис компиляции рядом с сайтом: ваш код поступает, оптимизированный Wasm возвращается, и вы все равно получаете прозрачные логи, когда что-то выходит из строя.

Этот компромисс является намеренным: сообщество получает воспроизводимые сборки на нашей закрепленной цепочке инструментов, при этом никто не устанавливает одни и те же версии Rust, Wasm-opt и CosmWasm локально.

Кстати: мы НЕ храним код. Он просто получает рабочий процесс, компилируется и возвращается как артефакты .wasm (удаляется сразу после того, как браузер полностью его получает).

Компилятор доступен по адресу https://github.com/gonkalabs/wasm-cloud-compiler.

Моделирование: быстрая обратная связь без основной сети

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

  • Создайте экземпляр с помощью сообщения JSON и посмотрите эффекты хранения.
  • Пожарное выполнение, запрос и проверка ответов.
  • Перебирайте формы сообщений, прежде чем беспокоиться о газе или высоте блока.

Под капотом это WebAssembly с импортом хостов в стиле CosmWasm (области памяти, db_read/db_write и тому подобное). Он не будет моделировать каждый крайний случай полного узла — и это нормально. Целью является быстрая и безопасная итерация и обучение, а не второй согласованный клиент.

Код SImulator доступен через инструменты разработчика браузера и открыт по адресу https://github.com/gonkalabs/wasm-cloud-compiler/blob/main/simulator.js.

Исследователь и развертывание: та же сеть, та же ментальная модель

Игровая площадка подключена к данным основной сети Gonka через наш прокси-сервер REST/RPC (того же происхождения, что и gonkalabs.com (https://gonkalabs.com), поэтому браузер остается довольным). Вы можете увидеть, что происходит в реальном времени, а затем подключить GG Wallet, когда захотите подключиться к сети.

Если вы создаете dApp, это также простой способ проверить, как развернутый контракт ведет себя при реальной подписи, без написания одноразового сценария.

Открытый исходный код и доверие

Детская площадка находится в репозитории нашего сайта; части, которые имеют значение для доверия и повторного использования (сервис компилятора, симулятор, подключение кошелька), доступны для проверки. Та же философия, что и у GG Wallet (https://github.com/gonkalabs/ggwallet), GNS (https://github.com/gonkalabs/gns), OpenGNK (https://github.com/gonkalabs/opengnk), tx-scanner (https://github.com/gonkalabs/tx-scanner) и rpc-pooler. (https://github.com/gonkalabs/rpc-pooler): покажите работу, позвольте людям разветвляться, сообщать о проблемах и предлагать улучшения.

Чему мы научились при его создании

  • UX-разработчик превосходит количество функций: прокручиваемые журналы, загружаемые файлы Wasm и очевидный текст ошибок экономят больше времени, чем другой флажок, который никто не читает.
  • CosmWasm в браузере требователен: правильный выбор памяти/регионов и импорта — это разница между «недоступно» и «работает»; мы исправили это, поэтому симуляция соответствует ожиданиям контрактов, а не игрушечной виртуальной машине.
  • Сообщество движется быстро: когда Telegram запрашивает фиктивные учетные записи, подсказки по методам или многофайловые проекты, эти запросы обычно верны — мы добавили их, потому что реальные люди столкнулись с проблемой.

Что дальше

Мы будем продолжать сжимать цикл в зависимости от того, что просят разработчики: лучшие подсказки, более богатое моделирование (при этом оно по-прежнему остается честным), более четкая документация для потоков GG Wallet + CosmWasm и все, что поможет большему количеству людей отправлять контракты на Gonka, не увязая в настройке.

Если что-то сбивает с толку или сломано, откройте проблему в наших репозиториях на github.com/gonkalabs (https://github.com/gonkalabs) или свяжитесь с нами в Telegram. Мы отправляем быстро, когда запрос конкретен.

Попробуйте: gonkalabs.com/playground (https://gonkalabs.com/playground) О нас: gonkalabs.com (https://gonkalabs.com) | Проводник: gonka.gg (https://gonka.gg) | GitHub: github.com/gonkalabs (https://github.com/gonkalabs)

Предыдущие публикации Gonka Labs

Gonka Labs: как мы строим инфраструктуру для Gonka (https://github.com/gonka-ai/gonka/discussions/880)

OpenGNK — локальный OpenAI-совместимый прокси-сервер для Gonka (https://github.com/gonka-ai/gonka/discussions/890)

Служба имен Gonka (GNS) — удобочитаемые имена для сети Gonka (https://github.com/gonka-ai/gonka/discussions/898)

Оригинал
gonkalabs avatar
gonkalabsАвтор
2026-03-31

Motivation

Building smart contracts is, usually, a pain - it keeps coming up: you want to try a small contract idea, poke at something already deployed, or show a teammate how a message works - and you end up juggling a local Rust toolchain, wasmd , scripts, and RPC URLs before you even get to "does this execute do what I think?"

We already ship gonka.gg (https://gonka.gg) for reading the chain and GG Wallet (https://chromewebstore.google.com/detail/gg-wallet/elicodfmaffbndngiifcpmammicgjidd) for signing. The missing piece was a developer surface where anyone in the community could go from idea to wasm to "what happens if I call this?" in one place, without treating every experiment like a full infra project.

So we built the Contract Playground at gonkalabs.com/playground (https://gonkalabs.com/playground) .

It might be a full replacement for your production pipeline or It can be a fast feedback loop for learning, prototyping, and debugging - especially for people who are new to CosmWasm on Gonka or who do not want to maintain a local build farm just to try something.

Why this matters for the community

  • Lower barrier : You do not need a configured dev machine to get a wasm build and see errors. That helps newcomers and anyone on a laptop that is not set up for wasm32 .
  • Safer learning : Simulation runs in your browser against a mock chain. You can break things, replay messages, and read logs without spending gas or touching mainnet (or even a testnet) until you choose to.
  • Honest integration : When you are ready, the same flow can connect GG Wallet and talk to real RPC/REST through the same origin as the site, so you are not fighting CORS or pasting secrets into random tools. Everything happens from the browser window itself.
  • Living chain : The explorer tab pulls live code IDs and contracts from the network so you can orient yourself against what is actually deployed, not only against tutorial examples.

We use this internally. We hope it becomes a default link when someone asks "how do I try this or that idea for implementing contract on Gonka?"

Btw, we used it to develop our smart contract for gns.

What it does (high level)

Compile path: why remote, not "magic in the tab"

Rust to wasm builds are heavy. Browsers are the wrong place to run a full Cargo graph for every user. So we run a small compilation service next to the site: your code goes in, optimized wasm comes back, and you still get transparent logs when something fails.

That tradeoff is intentional: the community gets reproducible builds on our pinned toolchain without everyone installing the same Rust, wasm-opt , and CosmWasm versions locally.

BTW: we are NOT storing the code. It just gets recieved by the worker, compiled and returned as .wasm artefacts (deleted immidiately after browser fetches it fully)

Compiler is opensourced at https://github.com/gonkalabs/wasm-cloud-compiler

Simulation: quick feedback without mainnet

Simulation is where we think the playground helps the most people . You can:

  • Instantiate with a JSON message and see storage effects.
  • Fire execute and query and inspect responses.
  • Iterate on message shapes before you care about gas or block height.

Under the hood this is WebAssembly with CosmWasm-style host imports (memory regions, db_read / db_write , and friends). It will not model every edge case of a full node - and that is OK. The goal is fast, safe iteration and teaching, not a second consensus client.

SImulator code is available via browser devtools and opensourced at https://github.com/gonkalabs/wasm-cloud-compiler/blob/main/simulator.js

Explorer and deploy: same network, same mental model

The playground is wired to Gonka mainnet data via our proxied REST/RPC (same origin as gonkalabs.com (https://gonkalabs.com) , so the browser stays happy). You can see what is live, then plug in GG Wallet when you want to go on-chain.

If you are building a dApp, this is also a low-friction way to verify how a deployed contract behaves with real signing, without writing a one-off script.

Open source and trust

The playground lives in our site repo; the pieces that matter for trust and reuse (compiler service, simulator, wallet wiring) are there for inspection. Same philosophy as GG Wallet (https://github.com/gonkalabs/ggwallet) , GNS (https://github.com/gonkalabs/gns) , OpenGNK (https://github.com/gonkalabs/opengnk) , tx-scanner (https://github.com/gonkalabs/tx-scanner) , and rpc-pooler (https://github.com/gonkalabs/rpc-pooler) : show the work , let people fork, file issues, and suggest improvements.

What we learned while building it

  • Developer UX beats feature count : scrollable logs, downloadable wasm, and obvious error text save more time than another checkbox nobody reads.
  • CosmWasm in the browser is picky : getting memory/regions and imports right is the difference between "unreachable" and "it works"; we fixed that so simulation matches what contracts expect, not a toy VM.
  • The community moves fast : when Telegram asks for mock accounts, method hints, or multi-file projects, those requests are usually right - we added them because real people hit the wall.

What's next

We will keep tightening the loop based on what builders ask for: better hints, richer simulation (where it still stays honest), clearer docs for GG Wallet + CosmWasm flows, and anything that helps more people ship contracts on Gonka without drowning in setup.

If something is confusing or broken, open an issue on our repos at github.com/gonkalabs (https://github.com/gonkalabs) or ping us in Telegram. We ship fast when the request is concrete.

Try it: gonkalabs.com/playground (https://gonkalabs.com/playground) About us: gonkalabs.com (https://gonkalabs.com) | Explorer: gonka.gg (https://gonka.gg) | GitHub: github.com/gonkalabs (https://github.com/gonkalabs)

Previous Gonka Labs posts

Gonka Labs: How We're Building the Infrastructure for Gonka (https://github.com/gonka-ai/gonka/discussions/880)

Gonka.gg - Explorer, Analytics Platform, Data Provider for Gonka (https://github.com/gonka-ai/gonka/discussions/887)

OpenGNK - A Local OpenAI-Compatible Proxy for Gonka (https://github.com/gonka-ai/gonka/discussions/890)

GG Wallet - An Open-Source Browser Wallet strictly for Gonka (https://github.com/gonka-ai/gonka/discussions/938)