Corda:关于token SDK的问题
Corda: Questions about token SDK
我一直在玩Token SDK。我有一个问题。
我制作了一个扩展 FungibleToken class 的新令牌 class,以便我可以将一些信息(例如帐户 ID)添加到令牌中。我还为新令牌制作了架构和 PersistentState,以便我可以通过帐户 ID 查询令牌。
我的问题是,为了使用新架构,我想我需要覆盖 generateMappedObject() 和 supportedSchemas() 函数。但是,由于 FungibleToken returns 中的 supportedSchemas() 是一个 FungibleTokenSchemaV1 列表,因此我无法覆盖 supportedSchemas() 函数。
有人可以给我一些关于如何扩展 FungibleToken(以及 NonFungibleToken)的建议吗?
来自 Corda-Ledger Slack 的问题:http://slack.corda.net/
如果你愿意可以,但我不建议这样做。
如果你想在你的 cordapp 上使用账户,你应该使用账户库:github。com/corda/accounts
如果要向合约添加新功能,则只需要 sub-class 可替代令牌
否则你只需通过实现 TokenType
创建你自己的令牌类型
它是开放的,因为我们(维护者)可能想添加,比如说,WhitelistedFungibleToken
或类似的东西
令牌类型是关于令牌本身的信息。您可以通过创建新的令牌类型来添加有关帐户的信息,但是这可能不是一个好主意。
您应该改用帐户库,它会为您管理帐户……您不需要将帐户 ID 放入您的状态。状态中的 public 键用于 link 特定帐户的状态
这是关于帐户功能的 link:https://github.com/corda/accounts
您可以分叉 Corda 令牌 SDK。
git 克隆存储库
加载IDE中的存储库并修改文件token-sdk/contracts/src/main/kotlin/com/r3/corda/lib/tokens/contracts/states/FungibleToken.kt
,第66行,
override fun supportedSchemas() : List<MappedSchema> =
listOf(FungibleTokenSchemaV1)
别忘了给你的 cordapp 签名:
在 token-sdk/cert/
中复制(或创建)您的 P12 证书修改 build.gradle
(在合同和工作流目录中)带有签名选项的文件
signing {
enabled true
options {
keystore "${rootProject.projectDir}/cert/deepKeystore.jks"
alias "cordapp-signer"
storepass "password"
keypass "password"
storetype "PKCS12"
}
}
修改build.gradle文件中的“tokens_release_version”字段为tokens_release_version =“1.2.3-XXXX”
使用 ./gradlew jar
构建 JARS
验证 jar 是否已签名 jarsigner -verify tokens-contracts-1.2.3-XXXX.jar
现在您可以覆盖 supportedSchemas
函数。您将在您的 cordapp 中使用 tokens-contracts-1.2.3-XXXX.jar 和 tokens-workflows-1.2.3-XXXX.jar (而不是官方的 tokens-contracts-1.2.3.jar 版本).
在你的cordapp中,不要忘记修改build.gradle
文件来指定你的tokens-contracts-1.2.3-XXXX.jar.[=47的路径=]
Personnaly,我只是将 2 Jars 复制到我的 cordapp 根目录下的“libs”文件夹中,并修改了 repositories
部分中的 build.gradle 文件:
flatDir {
dirs "${rootProject.projectDir}/libs"
}
我一直在玩Token SDK。我有一个问题。
我制作了一个扩展 FungibleToken class 的新令牌 class,以便我可以将一些信息(例如帐户 ID)添加到令牌中。我还为新令牌制作了架构和 PersistentState,以便我可以通过帐户 ID 查询令牌。
我的问题是,为了使用新架构,我想我需要覆盖 generateMappedObject() 和 supportedSchemas() 函数。但是,由于 FungibleToken returns 中的 supportedSchemas() 是一个 FungibleTokenSchemaV1 列表,因此我无法覆盖 supportedSchemas() 函数。
有人可以给我一些关于如何扩展 FungibleToken(以及 NonFungibleToken)的建议吗?
来自 Corda-Ledger Slack 的问题:http://slack.corda.net/
如果你愿意可以,但我不建议这样做。
如果你想在你的 cordapp 上使用账户,你应该使用账户库:github。com/corda/accounts
如果要向合约添加新功能,则只需要 sub-class 可替代令牌
否则你只需通过实现 TokenType
创建你自己的令牌类型
它是开放的,因为我们(维护者)可能想添加,比如说,WhitelistedFungibleToken
或类似的东西
令牌类型是关于令牌本身的信息。您可以通过创建新的令牌类型来添加有关帐户的信息,但是这可能不是一个好主意。
您应该改用帐户库,它会为您管理帐户……您不需要将帐户 ID 放入您的状态。状态中的 public 键用于 link 特定帐户的状态
这是关于帐户功能的 link:https://github.com/corda/accounts
您可以分叉 Corda 令牌 SDK。
git 克隆存储库
加载IDE中的存储库并修改文件
token-sdk/contracts/src/main/kotlin/com/r3/corda/lib/tokens/contracts/states/FungibleToken.kt
,第66行,override fun supportedSchemas() : List<MappedSchema> = listOf(FungibleTokenSchemaV1)
别忘了给你的 cordapp 签名: 在
token-sdk/cert/
中复制(或创建)您的 P12 证书修改build.gradle
(在合同和工作流目录中)带有签名选项的文件signing { enabled true options { keystore "${rootProject.projectDir}/cert/deepKeystore.jks" alias "cordapp-signer" storepass "password" keypass "password" storetype "PKCS12" } }
修改build.gradle文件中的“tokens_release_version”字段为tokens_release_version =“1.2.3-XXXX”
使用
构建 JARS./gradlew jar
验证 jar 是否已签名
jarsigner -verify tokens-contracts-1.2.3-XXXX.jar
现在您可以覆盖
supportedSchemas
函数。您将在您的 cordapp 中使用 tokens-contracts-1.2.3-XXXX.jar 和 tokens-workflows-1.2.3-XXXX.jar (而不是官方的 tokens-contracts-1.2.3.jar 版本).在你的cordapp中,不要忘记修改
build.gradle
文件来指定你的tokens-contracts-1.2.3-XXXX.jar.[=47的路径=] Personnaly,我只是将 2 Jars 复制到我的 cordapp 根目录下的“libs”文件夹中,并修改了repositories
部分中的 build.gradle 文件:flatDir { dirs "${rootProject.projectDir}/libs" }