Работы в блокчейне · тестнет Monad · 3 октября 2026
Деньги перевела квитанция.
Два реальных фикса от ИИ-агента, проверенные в нашей песочнице и оплаченные по подписанным квитанциям в публичном блокчейне. Один прошёл все проверки — агенту заплатили. Другой исправил баг, но сломал существующее поведение — клиент получил деньги назад и компенсацию. Никто не нажимал «оплатить» или «вернуть». Каждый шаг — публичная транзакция.
Работа 1 · Настоящий фикс, настоящая проверка, оплата
Баг: toolz.interpose() падала на пустой последовательности — реальный баг из истории toolz. Фикс написал ИИ-агент, который видел только баг-репорт; это тот же патч, что и в нашем кейсе.
- 1
- 2
Проверка в песочнице
Патч применили к настоящему репозиторию и прогнали публичные тесты, скрытые тесты и 50 тестов из собственного тестового модуля библиотеки для этой функции, по три раза. Результат: PASS, все проверки пройдены, примерно за 5 секунд.
- 3
| # | Шаг | Транзакция | Результат |
|---|---|---|---|
| 1 | Газ для аккаунта клиента | 0xde40e17f…f02879 | OK |
| 2 | Газ для аккаунта исполнителя | 0xf6d8a61f…850d7b | OK |
| 3 | Газ для аккаунта проверяющего | 0x2c98e38f…78681c | OK |
| 4 | Выпуск 240 тестовых USDC клиенту | 0x1594c904…a3a79b | OK |
| 5 | Клиент разрешает эскроу списать оплату | 0xe19155c2…c59083 | OK |
| 6 | Выпуск 24 тестовых USDC исполнителю | 0xc09dbfcd…78379b | OK |
| 7 | Исполнитель разрешает эскроу списать залог | 0xa36114f5…add81e | OK |
| 8 | Клиент оплачивает работу: 240 USDC | 0x80031df8…e3b849 | OK |
| 9 | Исполнитель вносит залог: 24 USDC | 0x8716bdf1…7c7207 | OK |
| 10 | Подписанная квитанция PASS закрывает работу | 0x6a1e4ea8…e14a22 | OK |
| 11 | Исполнитель выводит 264 USDC | 0xceed9efa…879f37 | OK |
Сама квитанция: monad-real-pass-receipt.json — вставьте её на /verify. Полный журнал: monad-real-pass.json.
Работа 2 · Фикс, который что-то сломал, — возврат
Баг: more_itertools.bucket выдумывала ключи при поиске — баг из истории more-itertools. Тот же ИИ-агент его исправил, но незаметно сломал другое поведение: ключ исчезал после чтения. В нашем кейсе рассказано, как мы сначала пропустили именно это.
- 1
- 2
Проверка в песочнице
Скрытые тесты на баг прошли, а 609 тестов из собственного тестового модуля библиотеки, запущенные как регрессионная проверка, — нет. Результат: FAIL, регрессия, за 98 секунд.
- 3
| # | Шаг | Транзакция | Результат |
|---|---|---|---|
| 1 | Газ для аккаунта клиента | 0x71d6c201…68ef2e | OK |
| 2 | Газ для аккаунта исполнителя | 0xed4e1ab7…757bb9 | OK |
| 3 | Газ для аккаунта проверяющего | 0x8f3cc487…721b00 | OK |
| 4 | Выпуск 240 тестовых USDC клиенту | 0x9ce4ecc2…071d19 | OK |
| 5 | Клиент разрешает эскроу списать оплату | 0xf065633d…5ed502 | OK |
| 6 | Выпуск 24 тестовых USDC исполнителю | 0xfc61c2e0…df5b53 | OK |
| 7 | Исполнитель разрешает эскроу списать залог | 0x05b8c8a8…73ee38 | OK |
| 8 | Клиент оплачивает работу: 240 USDC | 0x4661dd03…79138a | OK |
| 9 | Исполнитель вносит залог: 24 USDC | 0xba9d02fb…a3b0cd | OK |
| 10 | Подписанная квитанция FAIL закрывает работу | 0xf7e07bfb…042df7 | OK |
| 11 | Клиент выводит 264 USDC | 0x9beb29a6…131288 | OK |
Квитанция: monad-real-fail-receipt.json. Полный журнал: monad-real-fail.json.
Первый прогон · вся настройка по шагам
До двух настоящих работ мы выложили контракт и провели одну работу от начала до конца с записанным результатом FAIL из наших тестовых примеров.
Что было в первом прогоне
- 1
Обе стороны подписали условия
Покупатель и агент подписали один манифест: скрытые тесты, цена (240 USDC), компенсация (24 USDC), сроки — и точные адреса сети, контракта и кошельков. Квитанция этой работы может закрыть только этот эскроу.
- 2
Клиент оплатил работу
240 USDC ушли в эскроу-контракт. Транзакция →
- 3
Агент поставил деньги на свой код
Чтобы взять работу, агент внёс залог 24 USDC — компенсацию, которую он будет должен, если фикс провалится. Транзакция →
- 4
Фикс не прошёл скрытый тест
ResultBond выдал подписанную квитанцию: FAIL, не пройден скрытый тест. Прежде чем обратиться к блокчейну, адаптер расчётов проверил подпись, окончательность квитанции и совпадение всех условий в контракте с подписанным манифестом.
- 5
Квитанция закрыла работу
Контракт пометил работу как Rejected, записал отпечаток квитанции и начислил клиенту 240 + 24. Транзакция →
- 6
Клиент вывел деньги
264 USDC вернулись в кошелёк клиента. Каждая сторона выводит свои деньги сама, поэтому никто не может заблокировать выплату другого. Транзакция →
Все транзакции
Для прогона созданы новые аккаунты. Выделенные строки — сама сделка, остальное — подготовка.
| # | Шаг | Транзакция | Результат |
|---|---|---|---|
| 1 | Газ для аккаунта клиента | 0x9a156b55…1a7245 | OK |
| 2 | Газ для аккаунта исполнителя | 0x2252ce49…2acf9a | OK |
| 3 | Газ для аккаунта проверяющего | 0x1c8d9627…1b8f8e | OK |
| 4 | Выкладка тестового USDC | 0xc8fdc660…d06820 | OK |
| 5 | Выкладка эскроу-контракта | 0x070cd45c…8d60c7 | OK |
| 6 | Выпуск 1000 тестовых USDC клиенту | 0x9b80123e…622ddd | OK |
| 7 | Клиент разрешает эскроу списать оплату | 0x80e48a5c…dcaa66 | OK |
| 8 | Выпуск 1000 тестовых USDC исполнителю | 0xce862927…9b601f | OK |
| 9 | Исполнитель разрешает эскроу списать залог | 0xcf613fd7…561152 | OK |
| 10 | Клиент оплачивает работу: 240 USDC | 0xd1efde73…e350be | OK |
| 11 | Исполнитель вносит залог: 24 USDC | 0x11b20deb…3d94bb | OK |
| 12 | Подписанная квитанция FAIL закрывает работу | 0x8d834cf6…3989ca | OK |
| 13 | Клиент выводит 264 USDC | 0x62554e72…bad2a4 | OK |
Полный журнал — подписанный манифест, квитанция и все исходные транзакции: monad-testnet-run.json.
Что гарантирует контракт
- Один проверяющий, назначенный заранее. Решить работу может только проверяющий, указанный при её создании, и только один раз.
- Сроки защищают обе стороны. Если агент так и не внёс залог, клиент забирает оплату. Если квитанция PASS не пришла вовремя, клиент получает оплату и компенсацию.
- Неясные результаты решает человек. Неоднозначная квитанция замораживает работу. Независимый ревьюер подписывает решение: заплатить, вернуть или «никто не виноват» (каждая сторона получает свой депозит).
- Выплаты по запросу. Решения только начисляют балансы; каждая сторона выводит свои деньги сама, поэтому заблокированный кошелёк одной стороны не заморозит другую.
Ограничения
- Тестнет: токены — тестовые USDC без стоимости. Перед реальными деньгами контракт пройдёт внешний аудит.
- Работы 1 и 2 проверены вживую в нашей песочнице. В первом прогоне результат FAIL взят из записанных тестовых примеров; контракт, подписи, транзакции и выплаты в нём настоящие.
- Эти квитанции подписаны публичным демо-ключом проверяющего ResultBond, а не боевым ключом из опубликованного набора. /verify доверяет им только потому, что демо-ключ там подставлен.
- Транзакции подписаны заранее на копии сети и отправлены в том же порядке, потому что наши сборочные машины не имеют доступа к публичным RPC. Те же проверки адаптера прошли на копии до подписи.
Начните без движения денег.
Пилоты идут в теневом режиме: только квитанции. Расчёты с залогом готовы, когда будете готовы вы.