Код:
// Четыре начальные состояния BOB_sentoffer, ALICE_gotoffer, ALICE_sentoffer, BOB_gotoffer
// инициатор включает в себя подписанный feetx и колоду 777 пары ключей
// ответчик выбирает один из 777 и возвращает его "BTCchose" сообщение
//
// "BTC<тзд> являются событие сообщений от другой стороны (событие сообщений ограниченно в длине 8)
// "lowercas" специальные мероприятия, <Техас> типы: <плата>, <отд>osit, <альт>оплата, это требование altcoin
// "<Техас>найденный" означает, что другая сторона подтвердится на заданном пользователем уровне доверия
// BTC_cleanup состояние только раскручивается незавершенным своп, как ничего не был совершен еще
// состояния instantdex_statecreate (S, N,<Название государства>, HandlerFunc, ErrorHandler,<государство Тайм-аут>,<государство Ошибка>
// данное состояние имеет несколько обработчиков и пользовательских событий, с таймаутов и ошибок, ссылающихся байпас
s = instantdex_statecreate (с, п,"BTC_cleanup", BOB_processfunc, 0,0,0);
s = instantdex_statecreate (с, п,"BOB_claimdeposit", BOB_processfunc, 0,0,0);
s = instantdex_statecreate (с, п,"ALICE_reclaim", BOB_processfunc, 0,0,0);
s = instantdex_statecreate (с, п,"BOB_sentoffer", BOB_processfunc, 0,"BTC_cleanup", 0);
s = instantdex_statecreate (с, п,"BOB_sentprivs", BOB_processfunc, 0,"BTC_cleanup", 0);
s = instantdex_statecreate (с, п,"BOB_gotoffer", BOB_processfunc, 0,"BTC_cleanup", 0);
s = instantdex_statecreate (с, п,"ALICE_sentoffer", ALICE_processfunc, 0,"BTC_cleanup", 0);
s = instantdex_statecreate (с, п,"ALICE_gotoffer", ALICE_processfunc, 0,"BTC_cleanup", 0);
s = instantdex_statecreate (с, п,"ALICE_sentprivs", ALICE_processfunc, 0,"BTC_cleanup", 0);
s = instantdex_statecreate (с, п,"ALICE_wait3", ALICE_processfunc, 0,"BTC_cleanup", 0);
s = instantdex_statecreate (с, п,"ALICE_waitfee_privs", ALICE_processfunc, 0,"BTC_cleanup", 0);
s = instantdex_statecreate (с, п,"ALICE_waitdeposit_privs", ALICE_processfunc, 0,"BTC_cleanup", 0);
s = instantdex_statecreate (с, п,"ALICE_waitfee_deposit", ALICE_processfunc, 0,"BTC_cleanup", 0);
s = instantdex_statecreate (с, п,"ALICE_waitprivs", ALICE_processfunc, 0,"BTC_cleanup", 0);
s = instantdex_statecreate (с, п,"ALICE_waitfee", ALICE_processfunc, 0,"BTC_cleanup", 0);
s = instantdex_statecreate (с, п,"ALICE_waitdeposit", ALICE_processfunc, 0,"BTC_cleanup", 0);
s = instantdex_statecreate (с, п,"BOB_sentdeposit", BOB_processfunc, 0,"BTC_claimdeposit", 0);
s = instantdex_statecreate (с, п,"BOB_altconfirm", BOB_processfunc, 0,"BTC_claimdeposit", 0);
s = instantdex_statecreate (с, п,"ALICE_sentalt", ALICE_processfunc, 0,"BTC_claimdeposit", 0);
s = instantdex_statecreate (с, п,"ALICE_waitconfirms", ALICE_processfunc, 0,"BTC_claimdeposit", 0);
s = instantdex_statecreate (с, п,"BOB_sentpayment", BOB_processfunc, 0,"BTC_claimdeposit", 0);
s = instantdex_statecreate (с, п,"ALICE_claimedbtc", BOB_processfunc, 0,0,0);
s = instantdex_statecreate (с, п,"BOB_claimedalt", BOB_processfunc, 0,0,0);
// события instantdex_addevent (s, * п,<Текущее состояние>,<мероприятие>,<сообщение для отправки>,<Далее государство>)
instantdex_addevent (с, * п,"BOB_sentoffer","BTCchose","BTCprivs","BOB_sentprivs");
instantdex_addevent (с, * п,"BOB_sentprivs","feefound","BTCdeptx","BOB_sentdeposit");
instantdex_addevent (с, * п,"ALICE_sentoffer","BTCchose","BTCprivs","ALICE_sentprivs");
// gotoffer государства отправлено BTCchose уже
instantdex_addevent (с, * п,"BOB_gotoffer","BTCchose","BTCprivs","BOB_sentprivs");
instantdex_addevent (с, * п,"ALICE_gotoffer","BTCchose","BTCprivs","ALICE_sentprivs");
// алиса нужно ждать различных предметов
instantdex_addevent (с, * п,"ALICE_sentprivs","BTCdeptx", 0,"ALICE_wait3");
// следующие состояния охватывают все перестановки три необходимых мероприятий, чтобы сделать altpayment
instantdex_addevent (с, * п,"ALICE_wait3","feefound", 0,"ALICE_waitdeposit_privs");
instantdex_addevent (с, * п,"ALICE_wait3","depfound", 0,"ALICE_waitfee_privs");
instantdex_addevent (с, * п,"ALICE_wait3","BTCprivs", 0,"ALICE_waitfee_deposit");
instantdex_addevent (с, * п,"ALICE_waitfee_privs","feefound", 0,"ALICE_waitprivs");
instantdex_addevent (с, * п,"ALICE_waitfee_privs","BTCprivs", 0,"ALICE_waitfee");
instantdex_addevent (с, * п,"ALICE_waitdeposit_privs","depfound", 0,"ALICE_waitprivs");
instantdex_addevent (с, * п,"ALICE_waitdeposit_privs","BTCprivs", 0,"ALICE_waitdeposit");
instantdex_addevent (с, * п,"ALICE_waitfee_deposit","depfound", 0,"ALICE_waitfee");
instantdex_addevent (с, * п,"ALICE_waitfee_deposit","feefound", 0,"ALICE_waitdeposit");
// ждать последнего события и разослать altpayment
instantdex_addevent (с, * п,"ALICE_waitprivs","BTCprivs","BTCalttx","ALICE_sentalt");
instantdex_addevent (с, * п,"ALICE_waitfee","feefound","BTCalttx","ALICE_sentalt");
instantdex_addevent (с, * п,"ALICE_waitdeposit","depfound","BTCalttx","ALICE_sentalt");
// Теперь очередь Боба, чтобы убедиться, что altpayment подтверждается и отправить реальный платеж
instantdex_addevent (с, * п,"BOB_sentdeposit","BTCalttx", 0,"BOB_altconfirm");
instantdex_addevent (с, * п,"BOB_altconfirm","altfound","BTCpaytx","BOB_sentpayment");
instantdex_addevent (с, * п,"ALICE_sentalt","BTCpaytx", 0,"ALICE_waitconfirms");
instantdex_addevent (с, * п,"ALICE_waitconfirms","bobfound", 0,"ALICE_reclaim");
instantdex_addevent (с, * п,"ALICE_waitconfirms","payfound","BTCprivM","ALICE_claimedbtc");
// если BTCprivM не приходит в, altcoin необходимо контролировать по претензии Элиса
instantdex_addevent (с, * п,"BOB_sentpayment","aclfound","BTCdone","BOB_claimedalt");
instantdex_addevent (с, * п,"BOB_sentpayment","BTCprivM","BTCdone","BOB_claimedalt");
// инициатор включает в себя подписанный feetx и колоду 777 пары ключей
// ответчик выбирает один из 777 и возвращает его "BTCchose" сообщение
//
// "BTC<тзд> являются событие сообщений от другой стороны (событие сообщений ограниченно в длине 8)
// "lowercas" специальные мероприятия, <Техас> типы: <плата>, <отд>osit, <альт>оплата,
// "<Техас>найденный" означает, что другая сторона подтвердится на заданном пользователем уровне доверия
// BTC_cleanup состояние только раскручивается незавершенным своп, как ничего не был совершен еще
// состояния instantdex_statecreate (S, N,<Название государства>, HandlerFunc, ErrorHandler,<государство Тайм-аут>,<государство Ошибка>
// данное состояние имеет несколько обработчиков и пользовательских событий, с таймаутов и ошибок, ссылающихся байпас
s = instantdex_statecreate (с, п,"BTC_cleanup", BOB_processfunc, 0,0,0);
s = instantdex_statecreate (с, п,"BOB_claimdeposit", BOB_processfunc, 0,0,0);
s = instantdex_statecreate (с, п,"ALICE_reclaim", BOB_processfunc, 0,0,0);
s = instantdex_statecreate (с, п,"BOB_sentoffer", BOB_processfunc, 0,"BTC_cleanup", 0);
s = instantdex_statecreate (с, п,"BOB_sentprivs", BOB_processfunc, 0,"BTC_cleanup", 0);
s = instantdex_statecreate (с, п,"BOB_gotoffer", BOB_processfunc, 0,"BTC_cleanup", 0);
s = instantdex_statecreate (с, п,"ALICE_sentoffer", ALICE_processfunc, 0,"BTC_cleanup", 0);
s = instantdex_statecreate (с, п,"ALICE_gotoffer", ALICE_processfunc, 0,"BTC_cleanup", 0);
s = instantdex_statecreate (с, п,"ALICE_sentprivs", ALICE_processfunc, 0,"BTC_cleanup", 0);
s = instantdex_statecreate (с, п,"ALICE_wait3", ALICE_processfunc, 0,"BTC_cleanup", 0);
s = instantdex_statecreate (с, п,"ALICE_waitfee_privs", ALICE_processfunc, 0,"BTC_cleanup", 0);
s = instantdex_statecreate (с, п,"ALICE_waitdeposit_privs", ALICE_processfunc, 0,"BTC_cleanup", 0);
s = instantdex_statecreate (с, п,"ALICE_waitfee_deposit", ALICE_processfunc, 0,"BTC_cleanup", 0);
s = instantdex_statecreate (с, п,"ALICE_waitprivs", ALICE_processfunc, 0,"BTC_cleanup", 0);
s = instantdex_statecreate (с, п,"ALICE_waitfee", ALICE_processfunc, 0,"BTC_cleanup", 0);
s = instantdex_statecreate (с, п,"ALICE_waitdeposit", ALICE_processfunc, 0,"BTC_cleanup", 0);
s = instantdex_statecreate (с, п,"BOB_sentdeposit", BOB_processfunc, 0,"BTC_claimdeposit", 0);
s = instantdex_statecreate (с, п,"BOB_altconfirm", BOB_processfunc, 0,"BTC_claimdeposit", 0);
s = instantdex_statecreate (с, п,"ALICE_sentalt", ALICE_processfunc, 0,"BTC_claimdeposit", 0);
s = instantdex_statecreate (с, п,"ALICE_waitconfirms", ALICE_processfunc, 0,"BTC_claimdeposit", 0);
s = instantdex_statecreate (с, п,"BOB_sentpayment", BOB_processfunc, 0,"BTC_claimdeposit", 0);
s = instantdex_statecreate (с, п,"ALICE_claimedbtc", BOB_processfunc, 0,0,0);
s = instantdex_statecreate (с, п,"BOB_claimedalt", BOB_processfunc, 0,0,0);
// события instantdex_addevent (s, * п,<Текущее состояние>,<мероприятие>,<сообщение для отправки>,<Далее государство>)
instantdex_addevent (с, * п,"BOB_sentoffer","BTCchose","BTCprivs","BOB_sentprivs");
instantdex_addevent (с, * п,"BOB_sentprivs","feefound","BTCdeptx","BOB_sentdeposit");
instantdex_addevent (с, * п,"ALICE_sentoffer","BTCchose","BTCprivs","ALICE_sentprivs");
// gotoffer государства отправлено BTCchose уже
instantdex_addevent (с, * п,"BOB_gotoffer","BTCchose","BTCprivs","BOB_sentprivs");
instantdex_addevent (с, * п,"ALICE_gotoffer","BTCchose","BTCprivs","ALICE_sentprivs");
// алиса нужно ждать различных предметов
instantdex_addevent (с, * п,"ALICE_sentprivs","BTCdeptx", 0,"ALICE_wait3");
// следующие состояния охватывают все перестановки три необходимых мероприятий, чтобы сделать altpayment
instantdex_addevent (с, * п,"ALICE_wait3","feefound", 0,"ALICE_waitdeposit_privs");
instantdex_addevent (с, * п,"ALICE_wait3","depfound", 0,"ALICE_waitfee_privs");
instantdex_addevent (с, * п,"ALICE_wait3","BTCprivs", 0,"ALICE_waitfee_deposit");
instantdex_addevent (с, * п,"ALICE_waitfee_privs","feefound", 0,"ALICE_waitprivs");
instantdex_addevent (с, * п,"ALICE_waitfee_privs","BTCprivs", 0,"ALICE_waitfee");
instantdex_addevent (с, * п,"ALICE_waitdeposit_privs","depfound", 0,"ALICE_waitprivs");
instantdex_addevent (с, * п,"ALICE_waitdeposit_privs","BTCprivs", 0,"ALICE_waitdeposit");
instantdex_addevent (с, * п,"ALICE_waitfee_deposit","depfound", 0,"ALICE_waitfee");
instantdex_addevent (с, * п,"ALICE_waitfee_deposit","feefound", 0,"ALICE_waitdeposit");
// ждать последнего события и разослать altpayment
instantdex_addevent (с, * п,"ALICE_waitprivs","BTCprivs","BTCalttx","ALICE_sentalt");
instantdex_addevent (с, * п,"ALICE_waitfee","feefound","BTCalttx","ALICE_sentalt");
instantdex_addevent (с, * п,"ALICE_waitdeposit","depfound","BTCalttx","ALICE_sentalt");
// Теперь очередь Боба, чтобы убедиться, что altpayment подтверждается и отправить реальный платеж
instantdex_addevent (с, * п,"BOB_sentdeposit","BTCalttx", 0,"BOB_altconfirm");
instantdex_addevent (с, * п,"BOB_altconfirm","altfound","BTCpaytx","BOB_sentpayment");
instantdex_addevent (с, * п,"ALICE_sentalt","BTCpaytx", 0,"ALICE_waitconfirms");
instantdex_addevent (с, * п,"ALICE_waitconfirms","bobfound", 0,"ALICE_reclaim");
instantdex_addevent (с, * п,"ALICE_waitconfirms","payfound","BTCprivM","ALICE_claimedbtc");
// если BTCprivM не приходит в, altcoin необходимо контролировать по претензии Элиса
instantdex_addevent (с, * п,"BOB_sentpayment","aclfound","BTCdone","BOB_claimedalt");
instantdex_addevent (с, * п,"BOB_sentpayment","BTCprivM","BTCdone","BOB_claimedalt");
котировка
Я не прошли через это шаг за шагом, но это хороший способ сделать это.
В любое время каждая из сторон находится в данном состоянии не так ли? Почему существует 4 состояния запуска? Разве это не должно быть просто, что Боб находится в одном состоянии и Алиса в другой?
Например, Боб начинает в BOB_start и Алиса начинает в Alice_waiting_for_trade_request, или что-то подобное.
Если узел получает предложение от другой стороны, то она создает поток для его обработки, как право веб-сервер?
Я предполагаю, что означает, что Алиса эффективно начинается Alice_received_trade_request, или эквивалент. Поскольку waiting_for_trade_request неявно путем прослушивания сокета.
Bob_start заставляет Боб отправить свое предложение, а затем переход к Bob_offer_sent.
Bob_offer_sent может тайм-аут в течение 30-60 секунд и вызвать Боб переход к Bob_cancel_offer. С другой стороны, это Алиса принимает предложение, они могут перейти к вознаграждению и 777 пар обмена. Там нет смысла тратить обработки, если другая сторона не принимает торговлю.
Я думаю, это зависит от того, как мелкозернистого разрешение состояния должно быть.
Кроме того, может быть шагом, где обе стороны решают, кто Алиса и кто Боб, так как человек, который предлагает сделку, не обязательно быть Боб.
Для того, чтобы избежать безумия я всегда назначают сторону Bitcoin как Боб и сторону altcoin как Алисе. Те путь все направления и сценарии всегда одинаковы.В любое время каждая из сторон находится в данном состоянии не так ли? Почему существует 4 состояния запуска? Разве это не должно быть просто, что Боб находится в одном состоянии и Алиса в другой?
Например, Боб начинает в BOB_start и Алиса начинает в Alice_waiting_for_trade_request, или что-то подобное.
Если узел получает предложение от другой стороны, то она создает поток для его обработки, как право веб-сервер?
Я предполагаю, что означает, что Алиса эффективно начинается Alice_received_trade_request, или эквивалент. Поскольку waiting_for_trade_request неявно путем прослушивания сокета.
Bob_start заставляет Боб отправить свое предложение, а затем переход к Bob_offer_sent.
Bob_offer_sent может тайм-аут в течение 30-60 секунд и вызвать Боб переход к Bob_cancel_offer. С другой стороны, это Алиса принимает предложение, они могут перейти к вознаграждению и 777 пар обмена. Там нет смысла тратить обработки, если другая сторона не принимает торговлю.
Я думаю, это зависит от того, как мелкозернистого разрешение состояния должно быть.
Кроме того, может быть шагом, где обе стороны решают, кто Алиса и кто Боб, так как человек, который предлагает сделку, не обязательно быть Боб.
Выполнение мудр, да можно иметь только одно исходное состояние для обеих сторон, однако мы имеем ситуацию, что любая из сторон может быть первым, чтобы поместить цитату в портфель заказов, то есть предложение или спросить, и это создает 4 возможных стартовых состояний с 2-мя сторонами.
алиса начинается с торгами, алиса начинается с спросить, боб начинается с торгами, боб начинается с спрашивать.
обратите внимание, что алиса может быть в двух из этих состояний в то же время, на самом деле N из них, используя подход, состояние машины каждой сделки, которая соответствует является его собственным состояние машины, относительно независимо от других (некоторых деталей, как общий доступного баланс против случайно больше были положить в портфеле заказов, чем имеющиеся средства, существующие сделки, которые находятся на рассмотрении)
Так вот почему 4 возможно начиная с состояния, когда есть две стороны торговли. Внутри у меня есть две начальные состояния, разветвляется в зависимости от того, является ли он алиса или боб. Кроме того, перед обменом готов поставить в государственной машину, много былых приготовительном должно быть сделано, и я хотел, чтобы состояние машина, чтобы быть как можно более чистой и не загромождала первоначальную настройку.
Джеймс