1. 摘要
杭州互聯網法院和司法區塊鏈平臺的技術建設方都是螞蟻金服區塊鏈。那麼,如何藉助螞蟻的技術能力和服務能力,快速對接上司法鏈,便於後續打通存證/維權的閉環流程。本文介紹螞蟻區塊鏈可信存證的業務及特點,費用及接入方法等,具有實戰指導意義。
2. 螞蟻區塊鏈可信存證的介紹
https://tech.antfin.com/products/TWC
螞蟻區塊鏈可信存證具備全鏈路可信,司法權威節點見證,安全隱私保護,一站式接入能力,全國首家法律認可的區塊鏈存證平臺。
2.1 螞蟻區塊鏈可信存證的4大優勢
司法權威節點見證
用戶數據採用分佈式賬本保存,由聯盟節點包括錢塘公證處、上海市計算機行業協會司法鑑定所、杭州互聯網法院等權威節點共同見證。
真實保障不可篡改
平臺採用完全分佈式架構,對用戶數據加密。計算和交互均在加密後數據的多個計算節點之間獨立完成,無中心控制節點,真實保障數據不可篡改。
安全合規隱私保護
保證數據最小化利用,所有計算均在加密或脫敏之後進行,最大程度地保障了個人隱私數據安全。
一站式接入
用戶可以通過豐富的 API 以及 SDK 進行一站式接入,享受平臺提供的全流程存證、出證服務。
2.2 螞蟻區塊鏈可信存證的5大應用場景
數字作品登記場景
互聯網時代信息傳播快、範圍廣,在沒有預先登記的情況下,數字作品被侵權的概率很大,並且維權成本很高。對此,螞蟻區塊鏈可信存證提供了針對數字作品,包括圖片、視頻、音頻、文字、代碼等數字作品的所有權登記服務,讓原創作品快速生成司法認可的電子數據存證證明,保護數字作品版權。
服務須知存證場景
互聯網服務行業大量糾紛在於平臺和商家是否就服務限制性條件提前明確告知用戶,包括限制性條件、使用範圍、服務協議、隱私保護條款等。對此,螞蟻區塊鏈可信存證提供了具備可信時間戳,公正中立,司法認可的服務須知存證服務,幫助平臺、商家和用戶維護自身合法權益。
電子憑證存證場景
電子證明、交易憑證、電子合同、電子票據等數字憑證存在不易管理、容易遺失、較難流通、難以驗真等缺陷。對此,螞蟻區塊鏈可信存證可以為用戶的電子憑證提供永久性存證、驗真服務,不僅方便用戶管理電子憑證,更讓用戶的電子憑證易於流通。
在線交易存證場景
網絡購物和交易行為存在大量的細節性數據,隨著時間的推移這些數據容易遺失,當產生糾紛時就很難串接起來。對此,螞蟻區塊鏈可信存證為用戶的在線交易提供公正客觀、司法認可的存證服務,為用戶的線上數據行為提供雙保險。
侵權維權存證場景
當用戶的合法權益受到侵犯時,螞蟻區塊鏈可信存證可以為用戶提供侵權證據的存證服務,如侵權網站的服務條款、服務內容、交易價格、客服溝通記錄等,確保用戶維權時的舉證能力。
輝哥個人理解,這些業務的場景很多企業都可以做,但是隻有螞蟻完成了司法鏈的建設,它具有壟斷式的資源優勢。具體toB的業務應用可以由各個平臺來完成,數據上司法鏈交給螞蟻來接口完成,比較切合實際。
3. 開通及計費規則
很多toB類的業務,規則比較繁雜或者故意設置成需要人工介入,強資源兌現的模式,不大滿足現在的市場需求。螞蟻在可信存證業務推廣上秉承阿里家“開放,簡單”的原則,還是比較人性化的。
3.1 開通
登錄螞蟻區塊鏈可信存證(https://tech.antfin.com/products/TWC)平臺,完成企業註冊和實名認證後,即可根據業務場景開通可信存證服務。
對應的場景有合同,版權,金融,租賃和司法這五類。)
3.2 計費規則
雖然是可信存證的計費方式是一種先使用次日結算後付費的計費方式,但要求其資金賬戶餘額大於1萬元人民幣,有點保證金的意思。
具體的價格參考(這個價格差異很大,跟實際的不符):
分類計費說明合同類存證每一次成功調用為一次有效次數。費用 0.012 元/次。版權類存證每一次成功調用為一次有效次數。費用 0.15 元/次。金融類存證每一次成功調用為一次有效次數。費用 1.2 元/次。租賃類存證費用待明確。司法類存證費用待明確。
4. 使用入門實例及API接口
4.1 快速開始
完成一次存證需要以下步驟:
- 創建存證事務:存證事務由一個全局唯一的ID作為憑證,供固定的存證人/公司多次使用。每次發起存證前,您可以選擇發起一個新的存證事務ID,也可以將一組相關聯的證據存放在一個存證事務中,這取決於您的業務需要。
- 發起存證:根據您的存證類型不同,還選擇發起 文本存證 、文件存證 、原文存證 等不同類型存證。發起存證時,請制定您在步驟1中申請的存證事務ID。
- 下載存證:您可以通過 下載文本存證 、下載文件存證 、下載原文存證 獲取您存證的數據,也可以通過 獲取存證事務數據 接口獲取指定存證事務中的全部數據。
4.2 可信存證典型接口
通過OpenAPI使用可信存證服務,可參考 可信存證服務OpenAPI,詳細文檔地址請參考以下OpenAPI介紹。
接口地址創建存證事務twc.notary.trans.create獲取事務中所有的存證信息twc.notary.trans.get創建文本存證(存證內容為文本明文,未做BASE64編碼)twc.notary.text.create獲取文本存證內容twc.notary.text.get創建文件內容存證(文本內容的BASE64編碼或者文本內容HASH)twc.notary.file.create獲取文件存證twc.notary.file.get創建原文內容存證 (存證文件內容的BASE64編碼)twc.notary.source.create獲取原文存證twc.notary.source.get
針對租賃,合同和金融行業的客戶,螞蟻還提供了一些專有接口,便於跟司法流程銜接上。具體參考鏈接:https://apdevcenter.cloud.alipay.com/console/openapi/product/TWC/apis?tenantName=VVRMJTRY
4.3 調用實例
下面提供調用 OpenAPI 時需要添加的依賴,並通過Java示例說明接口調用過程。
<code><
dependencies
><
dependency
><
groupId
>cn.com.antcloud.apigroupId
><
artifactId
>antcloud-api-twcartifactId
><
version
>1.1.15version
>dependency
><
dependency
><
groupId
>cn.com.antcloud.apigroupId
><
artifactId
>antcloud-api-sdkartifactId
><
version
>3.2.6version
>dependency
>dependencies
> /<code>
請參考以下代碼示例,完成存證事務創建的接口調用:
<code>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
{String
productInstanceId ="notary-api-test"
;AntFinTechProfile
profile =AntFinTechProfile
.getProfile("https://prodapigw.cloud.alipay.com"
,""
,""
);AntFinTechApiClient
client = newAntFinTechApiClient
(profile);CreateTransRequest
createTransRequest = newCreateTransRequest
();Identity
customer = newIdentity
(); 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 = newLocation
(); 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 = newCreateTextRequest
(); 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 = newCreateFileRequest
(); 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 = newCreateSourceRequest
(); 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());Thread
.sleep(5000
);GetTransRequest
getTransRequest = newGetTransRequest
(); getTransRequest.setTransactionId(createTransResponse.getTransactionId()); getTransRequest.setProductInstanceId(productInstanceId);GetTransResponse
getTransResponse = client.execute(getTransRequest);System
.out.println
(getTransResponse.getFileUrl()); } } /<code>
4.4 杭州互聯網法院對接
存證和取證完成後,如果要走司法程序,可以到杭州互聯網法院提交訴狀,杭州互聯網法院地址為:https://www.netcourt.gov.cn/portal/main/domain/index.htm
打開後進入到互聯網法院的首頁(以下為杭州互聯網法院訴訟平臺簡單介紹內容,功能和流程介紹僅供參考,以互聯網法院官方網站內容為準)
該頁面向下滾動有一個訴訟流程的簡單介紹,點擊下面紅框按鈕,可以查看法院官方訴訟流程的介紹。
後續根據頁面提示操作即可,提交證據的時候需要做HASH驗證。
可以參考互聯網法院的訴訟規程介紹:https://www.netcourt.gov.cn/portal/main/domain/lassen.htm#lassen/litigationDocuments