3. Выполнение договоров (контрактов). В исполняемом (valid) контракте должны быть указаны (максимальные) суммы обеспечения для каждого из участников в случае неисполнения условий договора (default). Договор должен предусматривать участие третьей стороны, арбитраж. До начала действия договора все стороны, включая арбитра, должны его подписать. После публикации (broadcast) подписанного договора каждый участник системы списывает со счета каждой из сторон сумму его (максимального) обеспечения и зачисляет эту сумму на специальный счет «Контракт с SHA-1 хэш H», определенный именно для этого контракта (a secure hash of the contract). Договор вступает в силу, если со счета каждого участника можно списать указанную сумму, не получив в результате отрицательный баланс, в противном случае контракт игнорируется и счета откатываются.
Образец договора может выглядеть следующим образом:
K_A соглашается отправить K_B решение некоторой задачи до 01.01.2000.
K_B обязуется оплатить K_A 100 MU (денежные единицы) до 01.01.2000. K_C
принимает решение провести арбитраж в случае возникновения спора. K_A соглашается оплатить максимум 1000 MU в случае дефолта. K_B обязуется оплатить максимум 200
MU в случае дефолта. K_C обязуется оплатить максимум 500 MU в случае умолчанию.
4. Завершение (conclusion) договоров. Если договор успешно выполнен (завершился без спора), каждая из сторон передает подписанное сообщение «Контракт с SHA-1 хэш H завершился без возмещения ущерба». В ином случае: «Контракт с SHA-1 хэш H завершен со следующими неустойками: ***». При получении всех сигнатур (подписей), каждый участник системы возвращает обеспечение на счета каждой из сторон, удаляет учетную запись контракта и начисляет на счет (или списывает со счета) каждого участника контракта сумму в соответствии с договором.
5. Принудительное завершение (enforcement) контрактов. Если стороны договора не приходят к соглашению даже с помощью арбитра, каждая сторона передает свои предложения по штрафным санкциям (распределению обеспечения) и какие-либо аргументы или доказательства. Все участники (Each participant) выносят определение о том, как следует распорядиться обеспечением, и соответственно изменяют счета».
Второй протокол был еще короче:
«Счета участников не хранятся каждым из них самостоятельно, но на некоторых серверах, связанных широковещательным каналом. Формат операционных сообщений в этом случае остается тем же, что и в первом протоколе, но заинтересованным участникам каждой транзакции следует проверять случайно выбранное подмножество серверов, что сообщение ими было получено и успешно обработано.
Необходим какой-то механизм, обеспечивающий доверие к серверам, например, потребовать