蚂蚁区块链第20课 可信存证司法链从入门到实施

蚂蚁区块链开发-可信存证司法链从入门到实施

1. 摘要

杭州互联网法院和司法区块链平台的技术建设方都是蚂蚁金服区块链。那么,如何借助蚂蚁的技术能力和服务能力,快速对接上司法链,便于后续打通存证/维权的闭环流程。本文介绍蚂蚁区块链可信存证的业务及特点,费用及接入方法等,具有实战指导意义。

2. 蚂蚁区块链可信存证的介绍

蚂蚁区块链可信存证具备全链路可信,司法权威节点见证,安全隐私保护,一站式接入能力,全国首家法律认可的区块链存证平台。

2.1 蚂蚁区块链可信存证的4大优势

司法权威节点见证

用户数据采用分布式账本保存,由联盟节点包括钱塘公证处、上海市计算机行业协会司法鉴定所、杭州互联网法院等权威节点共同见证。

真实保障不可篡改

平台采用完全分布式架构,对用户数据加密。计算和交互均在加密后数据的多个计算节点之间独立完成,无中心控制节点,真实保障数据不可篡改。

安全合规隐私保护

保证数据最小化利用,所有计算均在加密或脱敏之后进行,最大程度地保障了个人隐私数据安全。

一站式接入

用户可以通过丰富的 API 以及 SDK 进行一站式接入,享受平台提供的全流程存证、出证服务。

2.2 蚂蚁区块链可信存证的5大应用场景

数字作品登记场景

互联网时代信息传播快、范围广,在没有预先登记的情况下,数字作品被侵权的概率很大,并且维权成本很高。对此,蚂蚁区块链可信存证提供了针对数字作品,包括图片、视频、音频、文字、代码等数字作品的所有权登记服务,让原创作品快速生成司法认可的电子数据存证证明,保护数字作品版权。

服务须知存证场景

互联网服务行业大量纠纷在于平台和商家是否就服务限制性条件提前明确告知用户,包括限制性条件、使用范围、服务协议、隐私保护条款等。对此,蚂蚁区块链可信存证提供了具备可信时间戳,公正中立,司法认可的服务须知存证服务,帮助平台、商家和用户维护自身合法权益。

电子凭证存证场景

电子证明、交易凭证、电子合同、电子票据等数字凭证存在不易管理、容易遗失、较难流通、难以验真等缺陷。对此,蚂蚁区块链可信存证可以为用户的电子凭证提供永久性存证、验真服务,不仅方便用户管理电子凭证,更让用户的电子凭证易于流通。

在线交易存证场景

网络购物和交易行为存在大量的细节性数据,随着时间的推移这些数据容易遗失,当产生纠纷时就很难串接起来。对此,蚂蚁区块链可信存证为用户的在线交易提供公正客观、司法认可的存证服务,为用户的线上数据行为提供双保险。

侵权维权存证场景

当用户的合法权益受到侵犯时,蚂蚁区块链可信存证可以为用户提供侵权证据的存证服务,如侵权网站的服务条款、服务内容、交易价格、客服沟通记录等,确保用户维权时的举证能力。

辉哥个人理解,这些业务的场景很多企业都可以做,但是只有蚂蚁完成了司法链的建设,它具有垄断式的资源优势。具体toB的业务应用可以由各个平台来完成,数据上司法链交给蚂蚁来接口完成,比较切合实际。

3. 开通及计费规则

很多toB类的业务,规则比较繁杂或者故意设置成需要人工介入,强资源兑现的模式,不大满足现在的市场需求。蚂蚁在可信存证业务推广上秉承阿里家“开放,简单”的原则,还是比较人性化的。

3.1 开通

登录蚂蚁区块链可信存证( )平台,完成企业注册和实名认证后,即可根据业务场景开通可信存证服务。

对应的场景有合同,版权,金融,租赁和司法这五类。)

3.2 计费规则

虽然是可信存证的计费方式是一种先使用次日结算后付费的计费方式,但要求其资金账户余额大于1万元人民币,有点保证金的意思。

具体的价格参考(这个价格差异很大,跟实际的不符):

分类 计费说明
合同类存证 每一次成功调用为一次有效次数。费用 0.012 元/次。
版权类存证 每一次成功调用为一次有效次数。费用 0.15 元/次。
金融类存证 每一次成功调用为一次有效次数。费用 1.2 元/次。
租赁类存证 费用待明确。
司法类存证 费用待明确。

实际是采用推荐资源包的方式,具体链接为

最便宜的一个年套餐,折算为0.004元/次存证。

4. 使用入门实例及API接口

4.1 快速开始

完成一次存证需要以下步骤:

  1. :存证事务由一个全局唯一的ID作为凭证,供固定的存证人/公司多次使用。每次发起存证前,您可以选择发起一个新的存证事务ID,也可以将一组相关联的证据存放在一个存证事务中,这取决于您的业务需要。
  2. 发起存证:根据您的存证类型不同,还选择发起 、 、 等不同类型存证。发起存证时,请制定您在步骤1中申请的存证事务ID。
  3. 下载存证:您可以通过 、 、 获取您存证的数据,也可以通过 接口获取指定存证事务中的全部数据。

4.2 可信存证典型接口

通过OpenAPI使用可信存证服务,可参考 ,详细文档地址请参考以下OpenAPI介绍。

接口 地址
创建存证事务
获取事务中所有的存证信息
创建文本存证(存证内容为文本明文,未做BASE64编码)
获取文本存证内容
创建文件内容存证(文本内容的BASE64编码或者文本内容HASH)
获取文件存证
创建原文内容存证 (存证文件内容的BASE64编码)
获取原文存证

针对租赁,合同和金融行业的客户,蚂蚁还提供了一些专有接口,便于跟司法流程衔接上。具体参考链接:

4.3 调用实例

下面提供调用 OpenAPI 时需要添加的依赖,并通过Java示例说明接口调用过程。

<dependencies>
  <dependency>
    <groupId>cn.com.antcloud.api</groupId>
    <artifactId>antcloud-api-twc</artifactId>
    <version>1.1.15</version>
  </dependency>
  <dependency>
    <groupId>cn.com.antcloud.api</groupId>
    <artifactId>antcloud-api-sdk</artifactId>
    <version>3.2.6</version>
  </dependency>
</dependencies>

请参考以下代码示例,完成存证事务创建的接口调用:

import cn.com.antcloud.api.AntFinTechApiClient;
import cn.com.antcloud.api.AntFinTechProfile;
import cn.com.antcloud.api.twc.v1_0_0.model.Identity;
import cn.com.antcloud.api.twc.v1_0_0.model.Location;
import cn.com.antcloud.api.twc.v1_0_0.request.*;
import cn.com.antcloud.api.twc.v1_0_0.response.*;
import java.util.*;

public class Demo {
    public static void main(String[] args) throws InterruptedException{
        // 实例ID配置,正式环境请更换为notary-api-prod
        String productInstanceId = "notary-api-test";

       // 初始化客户端
        AntFinTechProfile profile = AntFinTechProfile.getProfile(
                "https://prodapigw.cloud.alipay.com",
                "<your-access-key>",
                "<your-access-secret>"
        );
        AntFinTechApiClient client = new AntFinTechApiClient(profile);

        // 构建请求
        CreateTransRequest createTransRequest = new CreateTransRequest();
        Identity customer = new Identity();
        customer.setCertName("小王");
        customer.setCertType("IDENTITY_CARD");
         // 测试时请替换为真实身份证号码
        customer.setCertNo("100101199001010112");
        customer.setMobileNo("13900010001");
        customer.setUserType("PERSON");
        createTransRequest.setCustomer(customer);
        createTransRequest.setProperties("{\"key\":\"value\"}");
        createTransRequest.setSubBizId("VIDEO");
        createTransRequest.setTsr(true);
        createTransRequest.setProductInstanceId(productInstanceId);

        CreateTransResponse createTransResponse = client.execute(createTransRequest);
        System.out.println(createTransResponse.getTransactionId());

        Location location = new Location();
        location.setCity("杭州");
        location.setImei("359426002899056");
        location.setImsi("460001357924680");
        location.setIp("0.0.0.0");
        location.setLatitude("66.33");
        location.setLongitude("23.26");
        location.setProperties("{\"key\":\"value\"}");
        location.setMacAddr("00-01-6C-06-A6-29");

        // 构建文本存证请求
        CreateTextRequest createTextRequest = new CreateTextRequest();
        createTextRequest.setLocation(location);
        createTextRequest.setNotaryContent("123123");
        createTextRequest.setPhase("123");
        createTextRequest.setProperties("key:value");
        createTextRequest.setTransactionId(createTransResponse.getTransactionId());
        createTextRequest.setProductInstanceId(productInstanceId);

        CreateTextResponse createTextResponse = client.execute(createTextRequest);
        System.out.println(createTextResponse.getTxHash());

        // 构建文件存证请求
        CreateFileRequest createFileRequest = new CreateFileRequest();
        createFileRequest.setLocation(location);
        String content = Base64.getEncoder().encodeToString("fileContent".getBytes());
        createFileRequest.setNotaryFile(content);
        createFileRequest.setNotaryName("testfile.txt");
        createFileRequest.setPhase("2");
        createFileRequest.setProperties("{\"key\":\"value\"}");
        createFileRequest.setTransactionId(createTransResponse.getTransactionId());
        createFileRequest.setTsr(true);
        createFileRequest.setProductInstanceId(productInstanceId);

        CreateFileResponse createFileResponse = client.execute(createFileRequest);
        System.out.println(createFileResponse.getTxHash());

        /*构建原文存证请求*/
        CreateSourceRequest createSourceRequest = new CreateSourceRequest();
        createSourceRequest.setSourceFile(Base64.getEncoder().encodeToString("test_source".getBytes()));
        createSourceRequest.setLocation(location);
        createSourceRequest.setProperties("{\"key\":\"value\"}");
        createSourceRequest.setSourceDesc("test source");
        createSourceRequest.setSourceName("testName");
        createSourceRequest.setPhase("3");
        createSourceRequest.setTransactionId(createTransResponse.getTransactionId());
        createSourceRequest.setProductInstanceId(productInstanceId);

        CreateSourceResponse createSourceResponse = client.execute(createSourceRequest);
        System.out.println(createSourceResponse.getTxHash());

        // 等待区块链出块,默认出块频率为2秒/个
        Thread.sleep(5000);
        // 构建请求,获取存证事务信息
        GetTransRequest getTransRequest = new GetTransRequest();
        getTransRequest.setTransactionId(createTransResponse.getTransactionId());
        getTransRequest.setProductInstanceId(productInstanceId);

        GetTransResponse getTransResponse = client.execute(getTransRequest);
        System.out.println(getTransResponse.getFileUrl());
    }
} 

4.4 杭州互联网法院对接

存证和取证完成后,如果要走司法程序,可以到杭州互联网法院提交诉状,杭州互联网法院地址为:

打开后进入到互联网法院的首页(以下为杭州互联网法院诉讼平台简单介绍内容,功能和流程介绍仅供参考,以互联网法院官方网站内容为准)

该页面向下滚动有一个诉讼流程的简单介绍,点击下面红框按钮,可以查看法院官方诉讼流程的介绍。

后续根据页面提示操作即可,提交证据的时候需要做HASH验证。

可以参考互联网法院的诉讼规程介绍:

5. 参考

(1)杭州互联网法院官网地址 (2)蚂蚁区块链可信存证

本文参与2022世界杯预选赛赛程直播社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

  • 发表于 2020-01-28 15:41
  • 阅读 ( 4570 )
  • 学分 ( 10 )
  • 分类:联盟链

0 条评论

请先 登录 后评论
辉哥
辉哥

CTO

107 篇文章, 1279 学分