配置文件config-local.yaml 中的相关参数根据 注释提示 相应置空之后发现依然无法正确部署到其他fabric网络中错误如下： 我配置了现有网络中的channel（ntchannel）
Hi @uid10086 , welcome to the forum. I don’t speak mandarin so I used Google Translate and got this (posting for everyone else’s benefit):
The following problems have been encountered in the use of the driver daml-on-fabric: The relevant parameters in the configuration file config-local.yaml are prompted according to the comments. After the corresponding blanking, it is still unable to be deployed to other fabric networks. The error is as follows: I configured the channel (ntchannel) in the existing network
Could you post the versions of all the dependencies listed on the daml-for-fabric readme page that you have installed, please? And how exactly are you running this? Are you following some guide or example?
sbt version 1.5.3
daml sdk 1.11.0
I suspect you are running into this issue: Bug ID: JDK-8133521 (fs) Paths.get(null); throws NullPointerException
That would happen if the field
config.channel.chaincode.metapath here is
Looking at your config, that is exactly the case… Could you try just setting a random path for the meatapath?
Actually, I think it should be
gopath: ./chaincode metapath: ./chaincode/src/github.com/digital-asset/daml-on-fabric/META-INF entryPath: github.com/digital-asset/daml-on-fabric
in your config. You also seem to have lost the
./ in front of
I see. The Java Bug I referenced above seems to be specific to Oracle Java 8. Is that what you are using? If so, a different Java version or distro probably fixes this?
Alternatively, you can bravely apply a local patch to the file I linked above. Change
config.channel.chaincode.metapath != null && Files.exists(Paths.get(config.channel.chaincode.metapath))
但是我想连接的是自己的fabric网络，并且已经有了channel（ntchannel）,那么我需要怎么配置呢，根据模版文件config-local.yaml的提示，我需要把这些选项（this attribute should be empty.），我应该如何配置
I think your config was fine. If you are using Oracle Java 8, you are running into a bug that occurs exactly if you run daml-for-fabric with empty metapath on that Java version.
The best way to verify is to either switch java version if you have another one available, or to try out the patch suggested above.
The daml-for-fabric experts around here are largely US-based so if neither of those work, we may have to wait for them to get up.
So, i had another quick look and actually ran a test this time since you are no longer running into a Java bug. “empty” in the readme appears to mean “empty string”, not
null. That needs to be clarified.
I can connect to an existing channel with this config:
channel: name: mainchannel channelTxFile: '' endorsementPolicy: '' chaincode: name: daml_on_fabric type: golang version: 1.0 gopath: '' metapath: '' entryPath: github.com/digital-asset/daml-on-fabric queryWaitTime: 30000 invokeWaitTime: 60000
As mentioned in our call, let’s try to use a new channel for daml-on-fabric, and I will test the setup using an existing channel.
So just to clarify:
ntchannel is an existing channel, but it doesn’t have daml running on it yet? As far as I understand, there are really three operations:
- Create a Fabric Channel
- Deploy the Chain Code for daml for fabric
- Run Daml over a Fabric channel with that chain code
endorsementPolicy fields are inputs for creating a new channel, ie for 1.
entryPath fields are for deploying the chaincode (ie 2). Both of those are done as part of the “provision” role in daml-on-fabric.
Now I’m actually not sure how to do 2 without doing 1, but I think your best bet would be to leave
endorsementPolicy empty and fill in
Then for every second daml-for-fabric instance you connect, you either remove the provision role, or also leave the chaincode fields empty.
Hi @bernhard yes, we understand the three steps. What we wish to check is that whether item 1 can be an existing channel where item 2 is not running yet. So far I have tested 1-2-3 together works fine (where 1 is a new channel).
As I said, I think this is probably the way:
Yes, we will test this and let you know the result. Thanks again and have a nice weekend.