Основываясь на идее Tier Нолана, я сделал так, чтобы атомарно торговли между BTC и NXT / NXTassets. Я должен быть в состоянии так эффективно сочетать два таких свопы с BTC <-> ALT (который поддерживает p2sh) будет в состоянии сделать.
Я лоббировал NXT поддерживать зарплату на выявление секрета (до определенного места назначения), где средства будут заблокированы с помощью rmd160 (sha256 (секрет)) и он будет выпущен, когда секрет, что хэши к этому значению представляется.
Потребовалось несколько попыток решить это и там вполне может быть еще некоторые крайние случаи, и это будет происходить в InstantDEX как мета-обмен называется "бумажник", Так что лучше всего, чтобы найти какие-либо недостатки, прежде чем он переходит в бета-тест.
Вот протокол:
0. Алиса и Боб согласны с условиями торговли и поделиться pubkeys их опубликованного адреса. Боб посылает rmd160 (sha256 (onetimepubkey)) Алисе вместе с выпуском NXT на секрет, связанного с тем же хэш.
1. Как рассчитать тот же адрес, что позволяет p2sh выкуп через 2of2 multisig или нормальные расходы на onetimepubkey Боба
2. Алиса посылает Бобу неподписанную сделку финансирования по адресу p2sh на сумму согласованной.
3. Боб создает multisig возврат ТХ на всю сумму обратно Алисе timelocked в будущее, знаки и посылает Алисе.
4. Алиса проверяет возврат является правильным, и если она транслирует операцию финансирования, которая создает расходуемый выход
5. Из-за податливости, Боб должен ждать, пока он не имеет достаточно подтверждает (1 должно быть достаточно?) Для значения торгуются. Когда он удовлетворен, он тратит деньги с адреса p2sh, используя нормальный путь, и это публикует его Публичное.
6. Алиса отправляет это Публичную, чтобы освободить NXT стороны сделки.
Выше теория, на самом деле есть несколько неприятных сюрпризов. Если вы используете TimeLock и имеют sequenceid -1, TimeLock игнорируется, и он попадает в blockchain сразу и вход помечается как провел сразу. Если у вас есть sequenceid, не -1, то отвергается с {"код": -26,"сообщение":"64: неконечное"}. Таким образом, Алиса будет держать в кармане транзакции возврата и убедитесь, что представить его, если Боб hasnt показал свой Публичный.
Это было от ручного запуска:
Алиса адр: 14XrJHhqMvDszMMwKR2d6u5PPvDeRieQoG -> 03b4143b6e7a064a78bc66dab0ca72251fea3d6fd8db1f4c48b91996d7af62dd05
Боб адр: 17Y5rr67RpTtuCd929dS6muyKZmjqJZQpr -> 037387677a21b8ebb472ff2d00892098dcd990a9a21b09b8e22aefece8b1cbbdc0
Боба одноразовая адр 1NBKFDmmHSpSzFnP9bX5bDWnm9zqD6nUv4 -> 03c8a7e64c763e908549aa0f93974ab346a559b486eba32bf14338542b4282b916 -> e84e0808b8cd32c38fa2093a490efabc6be53d7a
Теперь оба могут вычислить p2sh адрес 37FsSwJ59z5UuRjNFjtfNYWVFquBEsUGHC из redeemscript:
OP_IF OP_2 03b4143b6e7a064a78bc66dab0ca72251fea3d6fd8db1f4c48b91996d7af62dd05 037387677a21b8ebb472ff2d00892098dcd990a9a21b09b8e22aefece8b1cbbdc0 OP_2 OP_CHECKMULTISIG
OP_ELSE OP_DUP OP_HASH160 e84e0808b8cd32c38fa2093a490efabc6be53d7a OP_EQUALVERIFY OP_CHECKSIG
OP_ENDIF
Я только в сочетании стандартного 2of2 и стандартного pubkeyhash в условной, но они никогда не занимался p2sh до этого уик-энда, ни с подписанием Bitcoin ТХ, это было довольно много работы, чтобы получить эту работу, как там не кажется, что любая реальная поддержка для пользовательских скриптов p2sh. Во всяком случае, благодаря libbcoin jgarzik, я был в состоянии получить подписание рабочего в день, и споткнулся о выяснении "очевидный" вещи о p2sh сценариев.
[Как и в стороне, если есть способ проверить, что e84e0808b8cd32c38fa2093a490efabc6be53d7a от третьих Публичного в виде 2of3 multisig адреса, то не было бы никакой необходимости в какой-либо пользовательской redeemscript. Просто нормальный проводит к 2of3 multisig бы работал (с бобом, имеющими 2 из трех адресов). К сожалению, я думаю, что это криптографический трудно перейти от msig адреса + pubkeyhash и 2 из 3 pubkeys к третьему Публичных. И если это не представляется возможным, то Алиса не имеет возможности узнать, что боб просто техника его подводит дать ей фиктивный pubkeyhash]
Боб посылает Алисе: e84e0808b8cd32c38fa2093a490efabc6be53d7a
NXT ТХ: 1117487717739855000 hashed_secret: cc863b881f35bbeca374b25d018d4e17dc4aa19b Hash: RIPEMD160_SHA256
и подпись возврат ТХ в кармане: 0100000001a9b3602a28960f1d855d1f52eea54f5e8b6fff469d54083ce433962b1c16dfe100000 000f800483045022100d1439b9170a6d14e07dc6a11dd5c1aab80df302fe4f1de77e12c7859ba20 361f02202dcc946b75995b62fb798b68e9bd443988c4004187f3c5cae52831b9415a712c0147304 40220754d43345edbeffd25cdfc6cbed16f59b1ef25c02092ff1752f0386e6a624e3d022075ef75 78ccb2bbd0a8c58394ed7e4c5803b6ee66691623342fe19862146fda9f01514c6363522103b4143 b6e7a064a78bc66dab0ca72251fea3d6fd8db1f4c48b91996d7af62dd0521037387677a21b8ebb4 72ff2d00892098dcd990a9a21b09b8e22aefece8b1cbbdc052ae6776a914e84e0808b8cd32c38fa 2093a490efabc6be53d7a88ac68a510ec550130750000000000001976a91426be0216d0089626b3 fc3a81f7d844f31a47e0fd88ac34b20500
Затем Алиса вещает финансирование ТХ e1df161c2b9633e43c08549d46ff6f8b5e4fa5ee521f5d851d0f96282a60b3a9
Боб видит на blockchain и проводит: 176026872b52b952c4649ee0b44026f87e2282aaaea7994117659a699662ae0a, который показывает 03c8a7e64c763e908549aa0f93974ab346a559b486eba32bf14338542b4282b916.
Алиса см Проведут Боб и подает NXT утверждение фазировки ТЙ.
До Алиса финансирования адрес p2sh, в худшем случае некоторые из временных резервов NXT Боба задерживаются на некоторое время. После того, как сделка финансируется, у нас есть несколько случаев:
а) Боб проводит Алиса утверждает, оба счастливы
б) Боб оленья кожа потратить на свой адрес, то после TimeLock, Алиса может представить timelocked возврат
в) крайних случаях:
ясно, что timelocks должны быть установлены правильно, может быть, 10 блоков BTC вперед и сделать его в два раза расчетное время на стороне NXT
Все, кроме 5 шагов, может произойти в считанные секунды, так что это BTC блок таймфрейм в случае основного, 10 блоков BTC в случае возврата. Не плохо для полностью децентрализованной торговли.
После того, как я проверить timelocked ТХ творю может быть подано после указанного блока, то я полностью интегрировать это в InstantDEX
Джеймс