Giter VIP home page Giter VIP logo

fabric-sdk-server's Introduction

fabric-sdk-server's People

Contributors

answerail avatar jimlycode avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

fabric-sdk-server's Issues

这个错误怎么解决

image
提示很清楚了,通到已经被初始化过了,不知道你具体的操作步骤是怎么操作的,在没有说明任何操作场景的情况下,直接抛出问题,我也没办法说具体解决方案

can't load package: package github.com/hyperledger/fabric/core/chaincode/lib/cid: cannot find package "github.com/hyperledger/fabric/core/chaincode/lib/cid" in any of: /opt/go/src/github.com/hyperledger/fabric/core/chaincode/lib/cid (from $GOROOT) /opt/gopath/src/github.com/hyperledger/fabric/core/chaincode/lib/cid (from $GOPATH)

    # 步骤1: 启动一个ccenv容器
    docker run -it <hyperledger/fabric-ccenv ImageID> bash
    e.g. docker run -it 953124d80237 bash   # 启动的容器ID: 73b10cc2e704
    
    # 步骤2: 进入fabric目录
    cd /opt/go/src/github.com/hyperledger/fabric
    
    # 73b10cc2e704 为步骤1hyperledger/fabric-ccenv镜像启动的容器ID
    # 步骤3: 将cid代码拷贝到容器内部
    docker cp . 73b10cc2e704:/opt/gopath/src/github.com/hyperledger/fabric
    
    # 步骤4: 重新生成镜像, 提交容器为镜像
    docker commit 73b10cc2e704 answer/fabric-ccenv:1.3.0
    
    # 步骤5: 给peer节点的编排文件指定 fabric-ccenv 镜像及版本
    environment
        - CORE_CHAINCODE_BUILDER=answer/fabric-ccenv:1.3.0

    # 说明: fabric-ccenv 镜像中包含了智能合约所需要的一些GO语言库, 一下命令可进入容器内部进行验证
    docker run -it <hyperledger/fabric-ccenv ImageID> bash
    ls /opt/gopath/src/github.com/hyperledger/fabric

你好,有没有往fabric存储字符串的例子,我自己写了一个能帮检查错误吗?

智能合约
package main

import (
"errors"
"fmt"

"github.com/hyperledger/fabric/core/chaincode/shim"

)

type SaveState1Chaincode struct {
}

func (t *SaveState1Chaincode) init(stub shim.ChaincodeStubInterface, args []string) ([]byte, error) {
fmt.Printf("Init called with function %s!\n", function)

return nil, nil

}

func (t *SaveState1Chaincode) invoke(stub shim.ChaincodeStubInterface, args []string) pb.Response {
var key, value string
if len(args) != 2 {
return shim.Error("Incorrect number of arguments. Expecting 2")
}
key = args[0]
value = args[1]

var err error
err = stub.PutState(key, []byte(value))

if err == nil {
    return shim.Error(err.Error())
} 


return shim.Success(nil)   

}

func (t *SaveState1Chaincode) query(stub shim.ChaincodeStubInterface, args []string) ([]byte, error) {

var key string
if len(args) != 1{
	return nil, err
}

key = args[0]

valInBytes, err := stub.GetState(key)

if err != nil {
    return nil, errors.New("Failed to get state for " + key)
}

message := "State for "  + key + " = " + string(valInBytes)

return []byte(message), nil;

}

func main() {
err := shim.Start(new(SaveState1Chaincode))
if err != nil {
fmt.Printf("Error starting Save State chaincode: %s", err)
}
}
java代码
package com.hyperledger.fabric.sdk.handler;

import static com.hyperledger.fabric.sdk.common.Config.PEER0_ORG1_EVENT_URL;
import static com.hyperledger.fabric.sdk.common.Config.PEER0_ORG1_GRPC_URL;
import static com.hyperledger.fabric.sdk.common.Config.PEER0_ORG1_NAME;

import java.util.ArrayList;
import java.util.Collection;

import org.hyperledger.fabric.sdk.ChaincodeID;
import org.hyperledger.fabric.sdk.Channel;
import org.hyperledger.fabric.sdk.HFClient;

import com.hyperledger.fabric.sdk.entity.dto.api.BuildClientDTO;
import com.hyperledger.fabric.sdk.entity.dto.api.ExecuteCCDTO;
import com.hyperledger.fabric.sdk.entity.dto.api.InstallCCDTO;
import com.hyperledger.fabric.sdk.entity.dto.api.PeerNodeDTO;

public class Installchaincode {
public static void main(String[] args) throws Exception {
String cxtPath = APITest.class.getClassLoader().getResource("").getPath();

	/* 通道名称 */
	String channelName = "mychannel";

	/* 智能合约配置信息 */
	String chaincodeName = "hashstore1";
	String chaincodeVersion = "1.0";
	String chaincodePath = "github.com/testchaincode";
	ChaincodeID chaincodeID = ChaincodeID.newBuilder().setName(chaincodeName).setVersion(chaincodeVersion).setPath(chaincodePath).build();

	System.out.println("1---start");

	// 1. 初始化客户端
	String mspPath = "crypto-config/peerOrganizations/org1.example.com/users/[email protected]/msp/";
	BuildClientDTO buildClientDTO = new BuildClientDTO.Builder()
			.name("org1.example.com").mspId("Org1MSP").mspPath(mspPath).build();
	HFClient client = ApiHandler.clientBuild(buildClientDTO);

	System.out.println("1---end---2---start");

	// 2. 定义peer
	Collection<PeerNodeDTO> peerNodeDTOS = new ArrayList<>();
	peerNodeDTOS.add(new PeerNodeDTO(PEER0_ORG1_NAME, PEER0_ORG1_GRPC_URL, PEER0_ORG1_EVENT_URL));

	System.out.println("2---end---3---start");

	// 3. 安装智能合约
	InstallCCDTO installCCDTO = new InstallCCDTO.Builder().chaincodeID(chaincodeID).chaincodeSourceLocation(cxtPath + "chaincodes/sample").peerNodeDTOS(peerNodeDTOS).build();
	ApiHandler.installChainCode(client, installCCDTO);

	System.out.println("3---end---4---start");

	// 4 创建通道
	Channel channel = ApiHandler.createChannel(client, channelName);

	System.out.println("4---end---5---start");

	// 5. 测试智能合约invoke
	ExecuteCCDTO invokeCCDTO = new ExecuteCCDTO.Builder().funcName("invoke").params(new String[] {"hn", "haonan"}).chaincodeID(chaincodeID).build();
	ApiHandler.invokeChainCode(client, channel, invokeCCDTO);

	System.out.println("5---end---6---start");

	// 5. 测试智能合约query
	ExecuteCCDTO invokeCCDTO1 = new ExecuteCCDTO.Builder().funcName("query").params(new String[] {"hn"}).chaincodeID(chaincodeID).build();
	ApiHandler.queryChainCode(client, channel, invokeCCDTO1);
	System.out.println("6---end");
}

}
是在你写的例子基础上我自己书写的一个类。
如果可以最好给我个例子看一下。

VSCCValidateTx for transaction txId returned error: VSCC error: endorsement

peer节点日志报错: VSCCValidateTx for transaction txId returned error: VSCC error: endorsement

解决方案: 背书策略中的 peer 需要改为 member

user1: {"role": {"name": "peer ", "mspId": "Org1MSP"}}
# 修改为以下内容
user1: {"role": {"name": "member", "mspId": "Org1MSP"}}

fabric 每个版本可能对应的背书策略会有所不同, 请参考官方源码对应的背书策略进行编辑

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.