#java #blockchain #corda
#java #блокчейн #corda
Вопрос:
В нашем проекте у нас есть пользовательская реализация Nonfungible token state и Nonfungible token contract . Мы используем приведенный ниже фрагмент кода для выдачи нашего пользовательского не взаимозаменяемого токена.
Party notary = NotaryUtilitiesKt.getPreferredNotary(getServiceHub(),NotaryUtilitiesKt.firstNotary());
TransactionBuilder transactionBuilder = new TransactionBuilder(notary);
IssueTokensUtilitiesKt.addIssueTokens(transactionBuilder, tokensToIssue);
FlowUtilitiesKt.addTokenTypeJar(tokensToIssue, transactionBuilder);
при попытке преобразовать полученный выше конструктор транзакций в проводную транзакцию ( builder.toWireTransaction(serviceHub);
) мы получаем ошибку с приведенной ниже трассировкой стека.
java.lang.IllegalArgumentException: This AttachmentWithContext was not initialised properly. Please ensure all Corda contracts extending existing Corda contracts also implement the Contract base class.
at net.corda.core.internal.AttachmentWithContext.<init>(AttachmentWithContext.kt:18)
at net.corda.core.transactions.TransactionBuilder.handleContract(TransactionBuilder.kt:487)
at net.corda.core.transactions.TransactionBuilder.selectContractAttachmentsAndOutputStateConstraints(TransactionBuilder.kt:359)
at net.corda.core.transactions.TransactionBuilder.toWireTransactionWithContext(TransactionBuilder.kt:159)
at net.corda.core.transactions.TransactionBuilder.toWireTransactionWithContext$core(TransactionBuilder.kt:146)
at net.corda.core.transactions.TransactionBuilder.toWireTransaction(TransactionBuilder.kt:140)
Комментарии:
1. В исключении говорится, что у вас проблема с реализацией пользовательского контракта. Реализует ли он базовый интерфейс контракта? docs.corda.net/docs/corda-os/4.6 /…
Ответ №1:
Как сказал Алесандро, ошибка, похоже, указывает на проблему с классом контракта.
Пожалуйста, убедитесь, что все контракты Corda, расширяющие существующие контракты Corda, также реализуют базовый класс Contract.
Я бы дважды проверил, правильно ли ваш класс contract реализует contract. Что-то вроде этого:
class IOUContract : Contract {
companion object {
@JvmStatic
val IOU_CONTRACT_ID = "net.corda.training.contracts.IOUContract"
}
Удачи!