IBM 区块链 - 简单应用

IBM Blockchain - Simple Application

好的,我需要在 IBM 区块链(入门计划)中开发一个简单的应用程序。但经过将近 1 个月的反复试验和数以千计的教程,我无法完成它。 所以,我的情况很简单(我猜): 我有一个 models.cto 文件:

namespace com.test.models

/**
 * A company asset.
 */
asset Company identified by company_id {
  o String company_id
  o String document_key
  o String document_value
  o String name
  o String telephone
  o String email
}

/**
 * A person_in_charge asset.
 */
asset PersonInCharge identified by person_in_charge_id {
  o String person_in_charge_id
  o String company_id
  o String name
  o String document_key
  o String document_value
  o String email
  o String language
  o String created_date_time
}

我试着让它成为参与者。我尝试进行交易,然后使用 .js 文件做一些事情,但只有关于使用资产、参与者等的复杂示例的用例和教程。我只想分别插入 "PersonInCharge" 和 "Company" 并查询(每个公司或按任何 ID)也分别。

我能够使用 Swagger api 生成器制作示例,但它没有按预期工作,甚至认为它创建了我想要的所有方法,如下所示:

总而言之,我想将我的链代码部署在 IBM Blockchain 的通道内的对等节点中。我确实部署了一个大理石示例,它确实运行良好。

真正的自我描述错误,而不是一般消息:

我正在按照 "how to" 本地开发和部署到 IBM 的指南进行操作。因此,我正在创建一个 bna 文件 composer archive create -t dir -n .,然后使用下载的连接设置(来自 IBM)创建一张卡,然后使用本教程 在入门计划上部署业务网络 而我在这一步失败了:composer network start -c adminCard -n bna-blockchain -V 0.0.1 -A admin -C ./credentials/admin-pub.pem -f delete_me.card。可能是因为我无法在 IBM 区块链上实例化我的链代码。

抱歉,如果它看起来令人困惑,请问我是否对我的问题有任何疑问。

在此先致谢,任何帮助都将非常棒!

在启动网络之前,您需要安装它:

composer network install -c adminCard -a vehicle-manufacture-network.bna

开发中休息了一个月回来了。当时,我得到了 IBM 内部人员的帮助,他可以帮助我完成它。

我在这里所以指出,也有一些失败。

那个 IBM 人(当然我不会说他的名字)自己说上传链码(channels/chaincode/Install 链码)的服务坏了,不能正常工作。 另外,我在 IBM Blockchain 付费论坛上问了一个容易回答的问题,但几乎没有帮助(他们甚至没有回答问题),即使在将近 3 个月之后。而且您找不到从头到尾都有效的教程(除了弹珠示例)。

抱歉,如果看起来我在这里无所事事,但我真的很难把它们放在一起 100%。

我不会展示如何创建模型文件或交易脚本(因为示例中有很多),但您需要执行的命令才能 运行 IBM 上的链代码并生成环回 API。话虽如此...

让我们来看看重要的部分:代码

首先,环境设置:

lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.6 LTS
Release:        16.04
Codename:       xenial

重要提示: IBM Blockchain(直到现在 2019-03-23)不会 运行 在 vi​​rtual box 或 hyperv 等虚拟机下 npm 依赖项。但是像亚马逊那样的硬件虚拟机(HVM)就可以了。

步骤

安装node和npm(严格按照列出的版本)

node -v
v8.15.1

npm -v
6.4.1

curl -O https://hyperledger.github.io/composer/unstable/prereqs-ubuntu.sh
chmod u+x prereqs-ubuntu.sh
./prereqs-ubuntu.sh

npm install -g --unsafe-perm composer-cli@0.20.5
npm install -g --unsafe-perm composer-rest-server@0.20.5

composer-rest-server -v
v0.20.5

composer -v
v0.20.5

使用 hyperledger 创建项目 composer-playground。导出后在刚才下载的项目根目录下导航(项目也可以在本地开发)

在 IBM Blockchain(Overview/Connection Profile/Download) 下载连接设置文件并将其命名为 connection-profile.json。找到节点 registrar,您将使用它来创建卡片。

运行npm install。如果在安装依赖项时出现任何问题,请检查您使用的版本是否与我使用的完全相同。如果不是,请全部卸载并从头开始。

棘手地带

composer card create -f ca.card -p connection-profile.json -u admin -s *your-password*

composer card import -f ca.card -c ca

composer identity request --card ca --path ./credentials -u admin -s *your-password*

您会看到凭据文件夹已生成。在这个文件夹里面,找到 文件 admin-pub.pem (credentials/admin-pub.pem) 复制它的全部内容,然后上传到 IBM Blockchain(Members/Certificates/Add 证书)。系统会提示您重新启动对等点,单击 "yes"

等点重新上线后,在同一个Certificates选项卡中,找到刚刚添加的证书,在ACTION栏中点击菜单,然后选择选项"Sync Certificate"。

 composer archive create -t dir -n .


 composer card create -f adminCard.card -p connection-profile.json -u admin -c ./credentials/admin-pub.pem -k ./credentials/admin-priv.pem --role PeerAdmin --role ChannelAdmin

 composer card import -f ./adminCard.card  -c  adminCard


 composer network install -c adminCard -a bna-name@version.bna



 composer network start -c adminCard -n *bna-name* -V *bna-version* -A admin -C ./credentials/admin-pub.pem -f delete_me.card (Output: Successfully created business network card: Filename: delete_me.card)

 composer card create -n *bna-name* -p connection-profile.json -u admin -c ./credentials/admin-pub.pem -k ./credentials/admin-priv.pem (Output file: admin@*bna-name*.card)

 composer card import -f ./admin@*bna-name*.card (Card file: ./admin@*bna-name*.card Card name: admin@*bna-name*)

现在您将使用(使用 swagger 自动生成)

生成其余部分 api
 composer-rest-server -c admin@*bna-name* -n never -w true -p 8080

尽情享受吧!