2017-05-02 3 views
2

私はいくつかのデータを保存する必要があるPOCに取り組んでいます。オブジェクトのID、価格、所有者など。スマートコントラクトを使用してBlockchainにそのようなものを格納することは可能ですか? Blockchainを使用してそれを達成する方法は何か。 (私はいくつかの研究を行い、人々はSCM業界でBlockchainを使用しています。ブロックチェインにデータを保存する

答えて

1

はいEthereumスマートコントラクトを使用する場合は、契約を定義してトランザクションとともに保存することができます。

https://www.ethereum.org/greeter

あなたが契約に保存されたデータを暗号化していない場合、それは誰もがアクセスされることに注意してください。

1

はい、契約書で希望するものを保存できます。もちろん、あなたのレコードを暗号化する必要があります。しかし、私の意見では、これは問題ではありません。

契約を定義し、それをピアに展開します。契約では、トランザクションの保存方法を定義する必要があります。また、検証方法も定義する必要があります。

1

あなたがアクセスのために保存する必要がハッシュを生成トランザクションいつでも

2

がHyperledgerファブリック「Getting Started」のページからtutorialを、次の点を考慮しますそして、契約内の適切なデータ構造を使用してデータを保存することができます。

基本的にあなたがchaincodesを活用することで、上の要求されたロジックを実装するには、次のgolangインタフェースを実装する必要があります。たとえば

// Chaincode interface must be implemented by all chaincodes. The fabric runs 
// the transactions by calling these functions as specified. 
type Chaincode interface { 
    // Init is called during Instantiate transaction after the chaincode container 
    // has been established for the first time, allowing the chaincode to 
    // initialize its internal data 
    Init(stub ChaincodeStubInterface) pb.Response 

    // Invoke is called to update or query the ledger in a proposal transaction. 
    // Updated state variables are not committed to the ledger until the 
    // transaction is committed. 
    Invoke(stub ChaincodeStubInterface) pb.Response 
} 

をこれに類似した何か:

type myStoreChaincode struct { 
} 

func (cc *myStoreChaincode) Init(stub ChaincodeStubInterface) pb.Response { 
    return shim.Success(nil) 
} 

func (cc *myStoreChaincode) Invoke(stub ChaincodeStubInterface) pb.Response { 
    action, params = stub.GetFunctionAndParameters() 
    if action == "storeItem" { 
     cc.StoreItem(stub, params) 
    } 

    // Handle here other cases and possible parameters combinations 
    return shim.Success(nil) 
} 

func (cc *myStoreChaincode) StoreItem(stub ChaincodeStubInterface, params []string) { 
     // Store item on ledger, where params[0] is a key and params[1] actual value 
     stub.PutState(params[0], params[1]) 
} 

これが唯一の簡易版でありますより複雑な場合は、 "Writing Your Application"チュートリアルに従うことができます。

2

はい、Hyperledgerファブリックに実装されたBlockchain(現在のバージョンは1.0です)にアセットに関する情報を保存することができます。資産に関する情報は、チェーンコード(言語ベースのトランザクションになる)によって更新されます。 HyperLedger Composer Playgroundを使ってこれを実験するのはかなり簡単です。 HyperLedger Fabric V1を運用基盤として使用するHyperLedge Composerは、新しいブロックチェーンアプリケーションの作成、特にプロトタイプ作成のプロセスを簡素化します。

Composerは、モデリング言語を使用して、ネットワークの特性(メンバータイプ、アセットタイプ、イベント、およびトランザクションがコアネットワークを定義する)を定義します。これには強力なアクセス制御言語があり、誰がどの資産とどのトランザクションにアクセスできるかを正確に指定できます。クエリの実行時にACLを自動的に呼び出す簡略化されたクエリ言語を備えています(見てはいけない情報を要求してもそれを見ることはできません)。最後に、単一の言語でコード - 現時点ではJavaScript - スマートトランザクションのチェーンコードも含まれています。

1

はい、スマートコントラクトでデータを保存することができます。スマートコントラクトとUIを作成するためにトリュフフレームワークを使用することもできます。 新しいスマート契約は、何かを保存するたびに作成することができます。また、作成した以前の契約の住所も保存することができます。それはまた容易に追跡することができます。