Closed srderson closed 8 years ago
I think the feature should provide APIs, like
The implementation of the APIs could interface with DocuSign, Cloundant, or other services. The applications would be responsible for storing the document(s) and associating them with the transaction(s). The validators should not verify the integrity of the off-chain documents, but it would be the responsibility of the application or an external entity.
What benefit would the Openchain APIs provide over just using the Cloudant, DocuSign, Git, etc. API directly? I'm not sure if all these services give you the file hash (Git does) but that's really just an extra line or two of code in the application.
We would provide a consistent API for applications to use whether with Cloudant or DocuSign or other services. It also ensures that the document returned is the document represented by the hash.
If the implementation is for DocuSign, it doesn't need to hash the documents since DocuSign does that, but Cloudant or others that might not guarantee integrity then the API implementation for those would provide hashing.
The API could also be enhanced to provide signing and verifying signatures; ie, more encapsulation of what DocuSign provides.
What we need is to have a 100% reliable side storage for clients to store large contracts files. Some clients may want to use docusign/cloudant while others maybe more comfortable with their local database.
Our goal should be creating a protocol (or client sdks) that allow users to easily choose their preferred way of storing contract documents, whether that’s docusig/cloudant service or local sql/nosql database.
move to backlog
At the blockchain meetup in SF on Monday, OneName and Blockstore showed their approach to mutable and immutable data stores, the latter using DHTs. Just fyi.
Isn't the etherium approach also DHT based?
A requirement of Openchain is the concept of off-chain storage. Off-chain storage will allow chaincode developers to store large files outside of the blockchain while referencing the files from a transaction stored in the blockchain.
For example, there may be a case where a chaincode is a codified written contract or represents a portion of a written contract. In this case we would like to 'link' the chaincode to the contract. Another scenario is the case where a transaction may be associated with a signed document. The signed document may be very large and we do not wish to store it across peers, but instead would like to record a verifiable link to the document in the transaction.
The verifiable link to a file from a transaction contains 2 parts.
While the URL does not guarantee future retrieval of the file, the hash does allow one to verify whether a file is the original file associated with the transaction.
As mentioned by @jeffgarratt in an earlier discussion, the goal of off-chain storage should not be to build a file storage repository. There are many existing storage repositories that would work for our use case. The most obvious example may be Git, although there are many other systems.
The goal of off-chain storage is to
Proposal
There exists an API on peers to invoke a transaction. This transaction either deploys a new chaincode or invokes a function in a chaincode. This API should expose a parameter which is an array of one of more URLs which point to files that are to be associated with the contract. Here are the steps for associating a file with a transaction.