許澤峣,劉秋明,姚哲鑫,朱松挺,謝 敏
(1.江西理工大學 軟件工程學院,江西 南昌 330013;2.江西省防汛信息中心,江西 南昌 330009)
河道采權在拍賣過程中往往出現企業為中標而盲目高價投標[1],導致難以避免惡性競爭,并增加中標后非法偷采多采風險[2],使后期河道采砂監管困難。為使河砂開采權得到合理化出讓,減少非法開采對河道航運安全和生態環境造成的破壞,除建全相關法規和監管制度外,拍賣方案設計十分關鍵。隨著互聯網技術的發展,傳統線下拍賣模式逐漸向線上轉移。線上拍賣可分為公開拍賣和密封拍賣,密封拍賣能有效保護拍賣的隱私性和安全性,應用較為廣泛。王鑫等[3]利用身份群簽名方案和可驗證的秘密共享協議,設計了一個高效、安全的密封拍賣方案。該方案需要一個可信的第三方,然而在實際情況下可能存在不可靠的第三方,導致拍賣隱私數據泄露,破壞拍賣的公平性。曹剛[4]結合Bit 承諾與盲簽名技術提出的密封拍賣方案能有效避免第三方與他人合謀造成的隱私數據泄露問題,但拍賣過程依賴中心化的第三方。
近年來隨著區塊鏈技術的發展[5-6],一種去中心化和不可篡改的無第三方線上拍賣平臺得到了廣泛研究。彭燁等[7]利用并發簽名保護拍賣信息,結合區塊鏈上保證金思想設計了一個無第三方的密封拍賣協議;Xiong 等[8]提出一種基于區塊鏈上時間釋放加密的匿名密封投標拍賣方案,防止拍賣人與投標人竄通;李蓓等[9]提出一種基于區塊鏈智能合約的密封拍賣方案,利用Pedersen 承諾隱藏競拍價,通過零知識證明驗證結果;Li 等[10]設計一種基于以太坊的密封式拍賣智能合約,利用zk-SNARKs 零知識證明實現拍賣結果的可信驗證。然而,上述區塊鏈線上拍賣方案側重于考慮數據隱私保護對拍賣安全的影響,忽略了競拍者之間的惡性競爭問題,缺少對拍賣價的管控。基于第一價格密封拍賣,容易導致競拍者為增加中標幾率,違背自身意愿出價[11],增加投機風險等問題,難以使河砂開采權得到有效分配。為解決上述問題,設計了一種聯盟鏈拍賣智能合約,利用第二價格拍賣機制最優出價策略,結合保證金思想和信用制度,激勵競拍者按照自身的真實意愿投標,約束不誠實的投標行為,防止盲目抬價引起惡性競爭,造成成交價過高的現象。
聯盟鏈是一種許可制區塊鏈[12],多個參與方組成去中心化聯盟[13]。區塊鏈賬本共識由指定節點完成,具有嚴格的訪問控制。鏈上數據只允許獲得許可的聯盟成員訪問,安全性高,兼具去中心化特性和高效率,適合多方參與的采砂許可拍賣場景。
智能合約為執行和驗證數字合同的計算機程序,允許在無第三方環境下進行可信交易。區塊鏈去中心化、不可篡改、過程透明和可溯源等特點使智能合約可信賴[14]。利用智能合約可實現無第三方、去中心化的可信拍賣流程。
第二價格密封拍賣又稱“維克里拍賣”[15],與第一價格類似,競拍者提交密封投標,出價最高者中標,但只需要支付第二高價。這種拍賣方式具有激勵相容性,在信息不對稱時的最優出價為自身對待拍物的真實估價[16]。中標后支付第二價是對競拍者說真話的獎勵,促進其展現真實投標意愿,防止故意抬價投標的問題。但第二價格機制對拍賣環境要求較為嚴格,在實際過程中可能會出現具有無視價格損失、惡意出價等不誠實行為的競拍者破壞拍賣秩序。為此,利用信用制度和保證金約束投標出價,規范拍賣行為,可使第二價格機制有效發揮作用。
現有的一些區塊鏈拍賣方案雖去除了第三方,但要求拍賣方打開密封標書來計算拍賣結果。不誠實的拍賣方可能會泄露真實投標價以謀取利益,對后續拍賣的公平性造成不利影響[17]。本文使用改進的密封方案[18]加密投標價,使加密數據保持原數據的大小關系,因此可直接比較加密投標價來計算拍賣結果,消除不可信因素,防止投標結果泄露。
主要過程為:①設競拍者的真實出價為pi,Fn(pi)為二進制位數計算函數為競拍者持有的秘密數,Ui=為加密價。其中,α和β是拍賣時由智能合約隨機生成并秘密保存的正小數,α≠β;②投標結束后智能合約公布最高加密價和第二加密價;③競拍結束后,由第二價出價人公布真實出價和αi,再由智能合約公布β;④驗證若,則可證明公布的是正確投標價。反解加密價是離散對數困難問題,在未知β的情況下,難以偽造投標價pi使驗證通過。
利用區塊鏈上的可信智能合約實現拍賣任務,執行過程受到多方監督和背書,拍賣方和競拍者只負責提供數據和驗證結果,消除不可信第三方和區塊鏈下不可靠程序造成的影響。為增強對拍賣的監管[19],融入監管方共同參與拍賣過程。三者分別作為獨立組織,共同構建去中心化拍賣環境,拍賣結果需要三方節點共同背書。每個實體組織維護獨立的證書頒發機構(Certificate Authority,CA),用于頒發各自實體對象的身份授權。獲得授權才能調用智能合約參與拍賣,可防止偽造和多重身份,保護拍賣的公平性與安全性。拍賣實體關系如圖1所示。

Fig.1 System model圖1 系統模型
(1)拍賣方。進行拍賣的政府部門或其他實體,負責公布拍賣信息及制定拍賣限制策略等。
(2)競拍者。采砂許可競買者,注冊身份并獲得初始信用值后才具備拍賣參與資格。
(3)監管方。負責對拍賣進行監管,以及為新注冊競拍者提供信用值的初始評估服務。
利用區塊鏈的不可篡改特性,將所有拍賣數據上鏈存儲。智能合約實行嚴格訪問控制,任意數據更改將留下痕跡,以防止拍賣過程中數據被惡意篡改[20]。將秘密數等拍賣隱私數據存儲在聯盟鏈私有數據集中,限制外部訪問權限,避免在拍賣過程中被泄露,破壞拍賣的公平性。拍賣數據類型主要有以下幾種:
(1)競拍者信息。bidder_info={bidder_ID,bidder_CA,credit_tab,credit_value}。用于保存競拍者身份授權后的基本信息及信用情況,包含競拍者ID、身份授權、初始信用評估表、競拍者信用值等信息。
(2)拍賣詳情。auc_view={auc_ID,auc_details,start_time,end_time,min_pirce,max_price,limit_credit}。拍賣方創建拍賣時公布,記錄待采砂許可詳細情況和拍賣規則等,競拍者可據此進行投標,包含拍賣ID、拍物信息、起止投標時間、拍賣底價、最高限制價、準入信用值等。
(3)拍賣信息。auc_info={auc_ID,secret_a,secret_b,k_up,k_low,res_price,R}。智能合約創建的鏈上私有數據集,不允許外部訪問,用于保存拍賣生成的秘密參數和拍賣方提供的調節參數、保留價等信息。
(4)拍賣日志。auc_log={log_ID,auc_ID,record_project,log_content,timestamp,log_type}。用于記錄投標詳情、處罰情況、拍賣結果和驗證信息,包含拍賣ID、記錄對象、日志內容詳情、時間戳、日志類型等信息。
為避免中標者無法履行承諾的情況,充分了解其可信度,需要根據競拍者自身條件和拍賣行為兩方面進行評估。自身條件用于衡量競拍者資金、技術、社會信用等,監管方可根據實際情況靈活評估,再將其保存至區塊鏈上的競拍者信息中。智能合約在拍賣時對競拍行為進行評估,根據監管方給出的權值將二者合并為信用評估表,再使用模糊層次分析法(Fuzzy Analytic Hierarchy Process,FAHP)計算信用值[21]。競拍者信用評估表如圖2所示。

Fig.2 Credit evaluation form圖2 信用評估表
拍賣方每次發布拍賣時設定最高限制價Pmax,提供警戒區間(klow,kup),智能合約生成隨機警戒價R=Random(klow,kup)·Pmax。當競拍者出價pi>R時,視為惡意出價,智能合約降低信用評估表中衡量此行為指標的值。當pi≥Pmax時,判斷為嚴重的惡意出價,將信用值清零。若出現簽名錯誤、拒絕支付、提交虛假驗證參數等違規行為,將對應指標置零。評估表變更后,將重新計算信用值。低于準入值則投標失效,出價相同則信用值高者獲勝。
拍賣總流程可分為拍賣準備、提交投標和公布結果3個階段。拍賣方發布拍賣詳情,競拍者根據區塊鏈上發布的拍賣進行投標,智能合約驗證投標價和簽名的合法性,投標結束后自動計算拍賣結果,通知第二價投標者提交真實投標價和秘密數。拍賣結束后,各參與者可根據拍賣日志上的信息驗證拍賣結果。拍賣總體流程如圖3所示。

Fig.3 Overall auction process圖3 拍賣總體流程
智能合約通過向外部暴露部分接口實現與拍賣各實體交互以及對鏈上數據的訪問控制,如表1所示。

Table 1 Smart contract external interface表1 智能合約外部接口
拍賣準備階段如圖4 所示,競拍者從授權中心注冊獲得基于橢圓曲線密碼學的公私鑰對作為身份授權[22]。為保證拍賣安全,調用智能合約時需要驗證用戶身份,數據上鏈需要用私鑰生成數字簽名進行數據留痕。監管方評估競拍者條件,通過GRPC 協議調用AddCreditTab接口上鏈存儲,該過程會觸發智能合約完成信用值的初始計算。
拍賣方以JSON 格式將拍賣底價、保留價、最高價、警戒區間和數字簽名等信息作為參數,調用合約CreateAuction接口發布一次拍賣。智能合約驗證簽名,隨機生成密封方案的兩個全局秘密參數α、β和隨機警戒價,與保留價和警戒區間一起保存在拍賣信息中,再將其余信息組成拍賣詳情公布上鏈。獲得信用值的競拍者可以進行投標。

Fig.4 Auction preparation圖4 拍賣準備
投標階段如圖5 所示,競拍者調用智能合約QueryAuc接口查看拍賣,再調用EncryptPrice接口提交真實投標價。在該過程中,智能合約先判斷競拍者信用值是否高于此次拍賣的準入值,未達要求則禁止投標,再分析投標價,低于拍賣底價或高于最高限制價時投標被駁回,清零該競拍者信用值,并調用內部接口CreatePunishLog生成一條記錄處罰內容的日志存儲到區塊鏈上。內部接口只能由智能合約調用,對外部不可見。若投標價高于隨機警戒價而未超出最高限制價,則根據其超過隨機警戒價的多少減少惡意出價指標的評分,再生成一條相應的處罰日志上鏈。若投標價在正常區間內,則返回加密投標價和秘密數。隨機警戒區間存儲在鏈上外部無法訪問的拍賣信息中,由合約隨機生成警戒價,防止拍賣方泄露警戒值,與競拍者共謀破壞拍賣公平。

Fig.5 Bidding stage圖5 投標階段
收到加密價和秘密數后,競拍者在客戶端通過安全哈希函數H(x)生成加密價的哈希值,再使用私鑰對哈希值數字簽名,使投標不可否認。將加密價和簽名作為密封投標發送給智能合約,智能合約先判斷是否在規定投標時間內,否則投標無效,再打上時間戳,調用CreateBidLog內部接口封裝成一條拍賣投標日志發布上鏈。投標成功后,競拍者需在規定時間內繳納保證金,未繳納者投標無效并降低信用值,保證金在競拍結束后退還。
如圖6 所示,投標結束后自動觸發拍賣結果計算內部接口ComputeResult,智能合約首先篩選出信用值達標的合法投標,驗證投標加密價與對應簽名是否匹配。驗證失敗的競拍者定義為非誠實的,降低信用值并取消此次競拍資格。然后對比加密價,出最高價的投標者中標,并選擇第二高價作為成交價。若最高出價有多個,信用值最高者中標。調用內部接口PublishResult在鏈上發布一條結果公布日志。智能合約計算拍賣結果時無需解密投標數據,保護了競拍者的出價隱私。拍賣結果需要拍賣方、競拍者、監管方三方節點共同背書,任意節點篡改結果都將無法通過驗證,從而保證拍賣公平、可靠。

Fig.6 Posting results圖6 公布結果
拍賣結果公示后,智能合約通知第二價投標人公布真實投標價和秘密數,并使用秘密參數β驗證是否正確。驗證成功后,通過內部接口CreateVerifyLog將β和第二價投標人提交的驗證參數公布上鏈。若第二價投標人拒絕提交驗證參數,會以扣除保證金和降低信用值作為懲罰,將保留價作為最終成交價。任意拍賣參與者通過QueryLog接口查詢拍賣日志即可自行驗證拍賣結果的準確性。最后,智能合約更新拍賣詳情中的中標者、中標價,將拍賣標記為結束狀態,釋放保證金。后期監管方可重點監管受到拍賣處罰的低信用值中標者,提高監管效率。
基于Hyperledger Fabirc1.4 聯盟鏈架構搭建去中心化拍賣平臺,使用Golang 語言開發智能合約和客戶端。實驗設備為一臺筆記本電腦,搭載12GB 內存、Intel Core i5 雙核處理器、CentOS7 操作系統,運行一臺雙核3GB 內存的虛擬機。區塊鏈環境中搭建有1 個排序節點、3 個組織,每個組織擁有2 個peer 節點,通過Docker 容器獨立運行。每個組織設立一個CA,對等節點使用CouchDB 狀態數據庫。
經過一段時間的拍賣測試,智能合約運行穩定,拍賣各個環節都能正確運行。表2 記錄了一次拍賣的部分投標情況。執行對象為投標用戶,日志類型PROPOSAL 代表合法投標的提交日志,VETO 代表禁止投標的懲罰日志。
圖7 展示了拍賣結果公布日志的記錄內容,圖8 為中標價驗證日志的記錄內容。拍賣日志均以JSON 格式結構化存儲在區塊鏈狀態數據庫中。

Table 2 Auction bidding situation表2 拍賣投標情況

Fig.7 Auction results release log圖7 拍賣結果公布日志

Fig.8 Winning bid verification log圖8 中標價驗證日志
圖9 展示了某次拍賣加密價、競拍者信用值與投標價的關系。共25 位競拍者,初始信用值都設為最高值1。從拍賣底價100 開始遞增投標,拍賣隨機警戒值為233,最高限制價為300,警戒區間為[0.75,0.85],準入信用值為0.8。

Fig.9 Relationship between crypto price,credit value and bid price圖9 加密價、信用值與投標價的關系
投標價經密封算法加密后被映射為精度為12 位的正小數加密價,并在底價和最高限制投標價內保持遞增關系。低于隨機警戒價投標的競拍者不會承受信用值損失,但投標價超過隨機警戒值時,競拍者信用值會隨著投標價增加而降低,到達0.625 時因觸及行為考量指標下限而停止下降。信用值低于準入信用值0.8 的競拍者投標無效,投標價低于底價禁止投標,高于最高限制價則信用值清零。
實驗結果表明,競拍者故意抬價或惡意出價都可能導致信用值損失。因此,在未知他人投標時最好的投標價是自身的真實估價。本次實驗的中標價為250,未達到調節上界255,實現投標價限制。在真實環境中,投標價高于隨機警戒值時,信用值可能會直接降低到準入限制以下,因此不誠實投標將承受很大風險。若競拍者按照真實的心理估價投標,根據第二價格拍賣原則,中標后僅需支付第二高價,即使不中標也不會承擔任何損失。
拍賣各階段的平均響應時間如圖10 所示。系統各階段的響應時間均為毫秒級,能夠滿足日常需求。拍賣準備和投標階段是由參與者獨立調用合約實現的,響應時間不會隨著投標人數的增加而增長。結果公布過程需要對比和校驗一次拍賣的全部投標數據,再驗證第二價投標人提供的驗證參數,因此耗時相對較長。系統最大的開銷為結果公布時依次對投標簽名的驗證。
本方案能夠滿足線上拍賣的以下安全要求:
(1)正確性。投標價加密后仍保持原有的大小關系。通過加密價得出的最高價和次高價與真實投標出價一致,符合拍賣原則,保證了正確性。
(2)公平性。競拍者的惡意行為會使信用值降低,拍賣結果通過去中心化執行的智能合約得出。拍賣全過程公開在區塊鏈中,保證了拍賣的公平性。

Fig.10 Average response time of each stage圖10 各階段平均響應時間
(3)密封性。投標價經加密后上鏈保存,拍賣過程不進行解密,拍賣結束后只公布成交價,避免了大量投標信息泄露后被分析利用,影響拍賣公平。
(4)不可否認性。投標需要投標者簽名,數據上鏈后無法被篡改,因此競拍者無法否認其出價。
(5)可驗證性。拍賣參與者可通過拍賣日志了解拍賣的真實情況,并驗證拍賣結果是否準確。
(6)不可偽造性。競拍者必須獲得準入許可和信用值。投標時需要驗證簽名,身份難以偽造。拍賣結果由智能合約計算得出,且公開可驗證,無法偽造。
本文融合信用管理機制設計了基于第二價格的區塊鏈拍賣智能合約,有效防止了競拍者故意抬價和惡意出價造成拍賣成交價失控的情況。鼓勵競拍者投標與自身意愿相匹配,使資源分配更加合理。實驗結果表明,無第三方的區塊鏈平臺及智能合約計算拍賣能夠有效保護投標數據的隱私性,并保證拍賣安全。為保證拍賣過程平穩,使智能合約對投標價作出準確判斷,以及防止保留價過低引起競拍者串謀,拍賣方如何設定合適的保留價和調節參數,需要結合現實情況作進一步分析。