Какая польза от обременений в Корде - PullRequest
0 голосов
/ 04 марта 2019

В Corda я смог провести свое состояние обременения в отдельной транзакции без обремененного состояния.Это умышленно или я что-то упустил?

На данный момент я могу применять обременения только через свой контракт.

Я ввел обременение, используя

 transactionBuilder.addOutputState(state =  TesterState(data = 1, participants = listOf(serviceHub.myInfo.legalIdentities.first())),contract =  TesterContract.ID, notary = serviceHub.networkMapCache.notaryIdentities.first(), encumbrance = 1)
    transactionBuilder.addOutputState(state =TimeEncumbranceState(Timestamp =  System.currentTimeMillis(), participants =  listOf(serviceHub.myInfo.legalIdentities.first())),contract =  TimeEncumbranceContract.ID,notary =  serviceHub.networkMapCache.notaryIdentities.first())

Я также могу потреблять эти состояния индивидуально, если в контракте отсутствуют проверки на обременение.

Существуют ли какие-либо неконтрактные меры по обеспечению обременения?

1 Ответ

0 голосов
/ 12 марта 2019

Предположим, у вас есть State A (состояние обременения), которое должно быть обременено State B (состояние обременения / обременения).Состояние обременения, если оно присутствует, налагает дополнительный контроль на обремененное состояние.Вы не можете потратить encumbered state без encumbrance state

Тем не менее, в текущей схеме обременения на Corda v3.x никто не мешает вам потратить encumbrance state самостоятельно (так что злоумышленник действительно может заморозить Aпотому что A относится к B как stateRef)

Вы можете легко решить вышеупомянутую проблему, всегда требуя круглых обременяющих ссылок.Состояние A, обремененное государством B, государство B, обремененное государством A. A->B->A, поэтому B. не может быть потрачен сам по себе.

Corda 4.x должен был добавить двунаправленные проверки на предмет обременений.См. здесь Однако обременения пока не рекомендуется использовать.

...