お盆休みにこんにちは。
どーも、のぶこふです。
今回は、CordaでもToken SDKがあるというのを
風の噂で耳にしたので、
「ちょいと触ってみるか〜〜〜」な記事です。
内容はCorda githubのReadmeを参考に実施します。
Token SDKについてはホワイトペーパーを参照してください。
ネタとしては、他にもCordaでのJDBC使用方法であったり、
Notaryさんのちょっとヤバメな話とかあるのですが、
今回は、おいておきます。
環境
今回は、Mac環境で実施していきます。
インストール
既存のソースコードにSDKを導入するのも良いのですが、
手抜きで テンプレを使用します。
適当なディレクトリにcloneして、ブランチを切り替えます。
git clone http://github.com/corda/cordapp-template-kotlin
cd cordapp-template-kotlin
git checkout token-template
ビルド&ノード起動
おなじみのコマンドを実行します。
「IntelliJで開きましょう」的なコメントがありますが、
気にせずにコマンド叩いて問題なしです。
おなじみのコマンド
./gradlew clean deployNodes
./build/nodes/runnodes
実行
PartyAのノードで下記コマンドを実行します。
PartyAで実行
start ExampleFlowWithFixedToken currency: GBP, amount: 100, recipient: PartyB
実行結果
>>> start ExampleFlowWithFixedToken currency: GBP, amount: 100, recipient: PartyB
✅ Starting
➡️ Done
Flow completed with result: SignedTransaction(id=669A6458BFA5A684C03ECA139DED8CC631AF277EC2890808FC6F94BC902E1CB9)
>>>
PartyBで確認してみます
PartyBで実行
run vaultQuery contractStateType: com.r3.corda.lib.tokens.contracts.states.AbstractToken
実行結果
>>> run vaultQuery contractStateType: com.r3.corda.lib.tokens.contracts.states.FungibleToken
states:
- state:
data: !<com.r3.corda.lib.tokens.contracts.states.FungibleToken>
amount: "100.00 TokenType(tokenIdentifier='GBP', fractionDigits=2) issued by\
\ PartyA"
holder: "O=PartyB, L=New York, C=US"
tokenTypeJarHash: null
contract: "com.r3.corda.lib.tokens.contracts.FungibleTokenContract"
notary: "O=Notary, L=London, C=GB"
encumbrance: null
constraint: !<net.corda.core.contracts.SignatureAttachmentConstraint>
key: "aSq9DsNNvGhYxYyqA9wd2eduEAZ5AXWgJTbTEw3G5d2maAq8vtLE4kZHgCs5jcB1N31cx1hpsLeqG2ngSysVHqcXhbNts6SkRWDaV7xNcr6MtcbufGUchxredBb6"
ref:
txhash: "669A6458BFA5A684C03ECA139DED8CC631AF277EC2890808FC6F94BC902E1CB9"
index: 0
statesMetadata:
- ref:
txhash: "669A6458BFA5A684C03ECA139DED8CC631AF277EC2890808FC6F94BC902E1CB9"
index: 0
contractStateClassName: "com.r3.corda.lib.tokens.contracts.states.FungibleToken"
recordedTime: "2019-08-13T04:13:49.336Z"
consumedTime: null
status: "UNCONSUMED"
notary: "O=Notary, L=London, C=GB"
lockId: null
lockUpdateTime: "2019-08-13T04:13:49.390Z"
relevancyStatus: "RELEVANT"
constraintInfo:
constraint:
key: "aSq9DsNNvGhYxYyqA9wd2eduEAZ5AXWgJTbTEw3G5d2maAq8vtLE4kZHgCs5jcB1N31cx1hpsLeqG2ngSysVHqcXhbNts6SkRWDaV7xNcr6MtcbufGUchxredBb6"
totalStatesAvailable: -1
stateTypes: "UNCONSUMED"
otherResults: []
>>>
発行されていることが確認できました。
おわりに
ということで、本当にちょっとだけ触ってみました。
次回あたりでは、独自のトークンを作成したりしてみましょう。
今回はここまでです。
ありがとうございました。