Corda:关于令牌SDK的问题



我一直在玩Token SDK。在这里我有一个问题。

我创建了一个新的令牌类来扩展FungibleToken类,以便我可以在令牌中添加一些信息(例如帐户ID)。我还为新令牌创建了架构和 PersistentState,以便我可以按账户 ID 查询令牌。

我的问题是,为了使用新的模式,我认为我需要覆盖generateMappedObject()和supportSchemas()函数。但是,由于 FungibleToken 中的 supportedSchemas() 返回 FungibleTokenSchemaV1 列表,因此我无法覆盖 supportedSchemas() 函数。

有人可以给我一些关于如何扩展FungibleToken(以及NonFungibleToken)的建议吗?

来自Corda-Ledger Slack的问题:http://slack.corda.net/

如果你愿意,你可以,但我不建议。

如果您想在 cordapp 中使用帐户,您应该使用帐户库:github.com/corda/accounts

如果您正在向合约添加新功能,则只需要子类可替代代币 否则,您只需通过实现TokenType来创建自己的令牌类型 它是开放的,因为我们(维护者)可能想要添加,比如说,WhitelistedFungibleToken或类似的东西

令牌类型是有关令牌本身的信息。您可以通过创建新的令牌类型来添加有关帐户的信息,这可能不是一个好主意。

您应该改用帐户库,它为您管理帐户...您无需将帐户 ID 放在您的州。状态中的公钥用于将状态链接到特定帐户

以下是有关帐户功能的链接:https://github.com/corda/accounts

你可以分叉 Corda 代币 SDK。

  1. git 克隆存储库

  2. 在 IDE 中加载资源库并修改文件token-sdk/contracts/src/main/kotlin/com/r3/corda/lib/tokens/contracts/states/FungibleToken.kt第 66 行

    override fun supportedSchemas() : List<MappedSchema> = 
    listOf(FungibleTokenSchemaV1)
    
  3. 不要忘记在 cordapp 上签名: 使用签名选项复制(或创建)token-sdk/cert/修改build.gradle(在合同和工作流目录中)文件中的 P12 证书

    signing {
    enabled true
    options {
    keystore "${rootProject.projectDir}/cert/deepKeystore.jks"
    alias "cordapp-signer"
    storepass "password"
    keypass "password"
    storetype "PKCS12"
    }
    }
    
  4. 修改build.gradle文件中的"tokens_release_version"字段,tokens_release_version="1.2.3-XXXX">

  5. 使用./gradlew jar构建罐

  6. 验证 JAR 是否已签名jarsigner -verify tokens-contracts-1.2.3-XXXX.jar

    现在,您可以覆盖supportedSchemas函数。您将在 cordapp 中使用

    代币-合约-1.2.3-XXXX.jar 和代币-工作流-1.2.3-XXXX.jar(而不是官方代币合约-1.2.3.jar 版本)。
  7. 在您的 cordapp 中,不要忘记修改build.gradle文件以指定您的代币合约-1.2.3-XXXX.jar 的路径。
    就个人而言,我只是将 2 个 Jars 复制到我的 cordapp 根目录的"libs"文件夹中,并在repositories部分中修改了 build.gradle 文件:

    flatDir {
    dirs "${rootProject.projectDir}/libs"
    }
    

最新更新