1. 电子存证合约

    显然区块链对于解决此问题有很大的帮助,它的不可篡改等特性很适合存证维权的场景,我们可以通过XuperChain来构建一个存取证据的智能合约(担心不被法院认可? 这里 或许能够解答你的疑问)

    下面我们就来教你帮助摄影师朋友开发一个能够存储照片版权、还能在发现被盗用后进行维权的智能合约

    对于摄影作品,通常是一个图片文件,其大小根据清晰度等原因可以多达几十MB(甚至更多),为避免存储空间浪费、以及保证区块链交易的效率,我们可以使用哈希算法(例如SHA256)只将图片的哈希值上链,而原图可以保存在其他地方

    为了能够存储多个“证据文件”,并且能够服务于更多的摄影师朋友,我们可以定义一个上传者到文件的map

    1. type User struct {
    2. Owner string
    3. UserFiles map[string]*UserFile
    4. }

    代码样例可以参看:

    从场景我们可以大致推断,以下两个功能是必要的

    • 获取已经存储过的某一个“证据文件”(query方法)更底层考虑,我们可以使用XuperChain提供的合约SDK功能 PutObject 和 来提供实际的存取功能

    Save、Query和Initialize方法的具体实现可以参考代码样例

    编译并部署合约的过程可以参考 部署wasm合约 章节,注意资源消耗可以一开始不加 —fee 参数,执行后会给出需要消耗的资源数

    执行合约进行“存证操作”的命令如下(运行需要使用 —fee 参数提供资源消耗):

    1. {
    2. "module_name": "wasm", # native or wasm
    3. "contract_name": "eleccert", # contract name
    4. "method_name": "save", # invoke or query
    5. "args": {
    6. "owner": "aaa", # user name
    7. "filehash": "存证文件的hash值",
    8. "timestamp": "存证的timestamp"
    9. }
    10. }
    1. "module_name": "native", # native or wasm
    2. "contract_name": "eleccert", # contract name
    3. "method_name": "query", # invoke or query
    4. "args": {
    5. "owner": "aaa", # user name
    6. "filehash": "文件hash值"
    7. }
    8. }
    9. # output 如下
    10. {
    11. "filehash": "文件hash值",
    12. }