Blockchain Hyperledger将数据从PC上传到区块链

Blockchain Hyperledger将数据从PC上传到区块链,blockchain,hyperledger,hyperledger-fabric,hyperledger-composer,Blockchain,Hyperledger,Hyperledger Fabric,Hyperledger Composer,我正在尝试编写一个能够定期将数据上传到区块链的程序,例如我办公室的温度。可能吗?实现这一点最简单的方法是什么?应该没有问题,您需要编写自己的链码,该链码能够接收和更新分类账中的温度。此外,要将其与物联网设备连接,您需要开发一些中介应用程序,该应用程序需要利用一个可用SDK与您的链码进行交互 您可以找到并链接需要实现的API。关于如何开始使用Hyperledger Fabric以及如何使用Hyperledger,还有一个很好的教程 还有一些示例应用程序,让您体验如何使用开发链码并从应用程序与之交互

我正在尝试编写一个能够定期将数据上传到区块链的程序,例如我办公室的温度。可能吗?实现这一点最简单的方法是什么?

应该没有问题,您需要编写自己的链码,该链码能够接收和更新分类账中的温度。此外,要将其与物联网设备连接,您需要开发一些中介应用程序,该应用程序需要利用一个可用SDK与您的链码进行交互

您可以找到并链接需要实现的API。关于如何开始使用Hyperledger Fabric以及如何使用Hyperledger,还有一个很好的教程

还有一些示例应用程序,让您体验如何使用开发链码并从应用程序与之交互


下面是一个非常原始的示例,展示了您的链码的外观:

type temperatureSmartContract struct {
}

func (contract *temperatureSmartContract) Init(stub shim.ChaincodeStubInterface) peer.Response {
    fmt.Println("Initialize chaincode if needed")
    return shim.Success(nil)
}

func (contract *temperatureSmartContract) Invoke(stub shim.ChaincodeStubInterface) peer.Response {
    funcName, params := stub.GetFunctionAndParameters()

    if funcName == "addTemperature" {
        // Store observation into ledger
        stub.PutState("temperature", []byte(params[0]))
    } else if funcName == "getTemperatures" {
        iter, err := stub.GetHistoryForKey("temperature")
        if err != nil {
            shim.Error(fmt.Sprintf("%s", err))
        }

        var result []string
        for iter.HasNext() {
            mod, err := iter.Next()
            if err != nil {
                shim.Error(fmt.Sprintf("%s", err))
            }
            result = append(result, string(mod.Value))
        }
        return shim.Success([]byte(result))
    }
    return shim.Success(nil)
}
当然,这是将定期温度更新捕获到分类账中的一种非常原始的方法,同时它可以为您提供一个良好的开端