安全多方計算(MPC)從入門到精通:JUGO-IDE及SDK

簡介:在上一節《安全多方計算(MPC)從入門到精通:Frutta語言》中,已經介紹了Frutta語言語法相關的內容,在本節中,咱們將介紹JUGO-IDE及SDK。html

1.什麼是JUGO-IDEjava

  JUGO-IDE是JUGO技術產品面向開發者提供的用來編寫MPC算法的開發工具,結合Frutta谷歌瀏覽器插件,開發者無需搭建任何環境就能夠快速編寫、編譯、運行和發佈算法。node

  經過使用JUGO-IDE,開發者可以使用Frutta語言編寫算法,並經過JUGO-IDE編譯成可在JUGO技術產品上執行的電路文件和java模板文件。https://jugo.juzix.net/ide/linux

2.支持語言c++

  Frutta語言。正則表達式

  Frutta做爲類C的高級語言,能夠將編寫的計算邏輯在JUGO-IDE生成電路文件和java模板文件,並在JUGO技術產品中執行計算。https://jugo.juzix.net/api_document/frutta/frutta.html算法

3開發環境chrome

  操做系統windows(後續支持linux),chrome瀏覽器(需先安裝Frutta谷歌瀏覽器插件)編程

  第一步,請點擊下載Frutta谷歌瀏覽器插件的安裝包https://jugo.juzix.net/file/PLUGIN.tar.gz,並在本地解壓。windows

  第二步,在Chrome瀏覽器地址欄輸入chrome://extensions/,啓用開發者模式,而後點擊按鈕「加載已解壓的擴展程序」,選擇插件所在的文件夾便可。

注意:因爲該插件暫未上傳Google插件商店,因此只能以開發者模式運行。打開chrome://extensions/開啓開發者模式。因爲是以開發者模式運行該插件的,Chrome瀏覽器會彈出「請停用以開發者模式運行的擴展程序」的提示,此時點擊「取消」才能夠繼續使用Frutta谷歌瀏覽器插件。   

1、界面

1.啓動頁

1)JUGO-IDE啓動頁默認包含一個歡迎頁和一個算法工程,開發者可根據須要進行增刪。

2)開發者在未登陸JUGO技術產品的狀況下首次進入JUGO-IDE啓動頁的時候,即會自動彈出登陸彈窗,提供了登陸、忘記密碼、註冊等功能入口。開發者登陸後纔可使用JUGO-IDE提供的訪問算法庫、發佈算法的功能。固然,開發者也能夠點擊「暫不登陸」關閉該登陸彈窗繼續使用MPC-IDE,不會對工程編譯等功能形成影響。

3)JUGO-IDE啓動時,編輯區默認打開JUGO-IDE歡迎頁,該頁面中提供了JUGO-IDE、Frutta、JUGO技術產品、MPC的簡單介紹和詳情頁面連接,開發者能夠點擊「詳情」去往詳情頁面進行深刻了解。

2.菜單欄

1)文件管理

  功能描述:提供「新建工程、新建文件、導入本地文件、導出到本地、保存當前文件、保存全部文件、刪除當前文件」等功能。

  操做示例:

  • 新建工程:點擊頭部「工具欄文件--新建工程」,會彈窗建立算法工程彈窗,開發者輸入算法名稱後,即在當前文件管理器中新建一個算法工程。

  • 算法工程目錄結構:

  • libraries: 引用的算法存放目錄;

  • bin: 當前算法工程編譯成功生成的java模板文件的存放目錄;

  • Include: 算法工程頭文件存放目錄;

  • Resource: 算法工程源文件存放目錄;

  • main.wir: 當前算法工程入口文件

注意:當前算法工程的編譯入口文件爲「main.wir」。若是選中其它文件點擊編譯,JUGO-IDE會自動定位到當前選中文件所屬的算法工程,並編譯該算法工程中的「main.wir」。若是須要編譯其它文件,須要在「main.wir」中引入該文件後再點擊「編譯」。

  • 新建文件:點擊頭部「工具欄文件--新建文件」,即在當前工程目錄下新建一個Untitled1.wir文件,並自動在編輯區打開。

  功能限制:IDE當前文件系統中至少有一個工程。

  • 導入本地文件:點擊頭部工具欄「文件--導入本地文件」,選擇某一文件後該文件即被導入進JUGO-IDE文件管理器,並自動在編輯區打開。

  功能限制:IDE當前文件系統中至少有一個工程。

  • 導出到本地:點擊頭部工具欄「文件--導出到本地」,會將IDE中當前選中的文件或文件夾導出到本地,文件夾的格式爲「文件夾名」.rar,文件的格式和當前選中的文件在IDE中的格式保持一致。

  功能限制:須要在IDE中選中文件或文件夾。

  • 保存/所有保存:點擊頭部工具欄「文件--保存」,會保存當前文件;點擊頭部工具欄「文件--所有保存」,會保存文件管理器中的全部文件;

  功能限制:當前窗口中有須要保存的文件

  • 刪除:點擊頭部工具欄「文件--刪除」,會刪除當前編輯區窗口打開的文件;

  功能限制:當前有選中的文件 2)編輯操做   功能描述:提供對當前文件「撤銷、恢復、複製、剪切、粘貼、查找、替換、格 式化、在文件中查找、在文件中替換」等常規功能。   操做示例:   在文件中查找/替換:點擊頭部工具欄「編輯--在文件中查找/替換」,左側邊欄會彈出搜索窗口,實現全局關鍵字的查找/替換功能。   功能限制:當前編輯區窗口中有打開的文件

3)幫助

  功能描述:提供對操做員的幫助文檔。

  操做示例:

  • 歡迎使用:點擊頭部工具欄「幫助--歡迎使用」,即會回到JIDE的歡迎頁面,該頁面中提供了JIDE的簡介及使用的大體流程。

  • 幫助文檔:點擊頭部工具欄「幫助--幫助文檔」,即會跳轉到JUGO技術產品的文檔中心,文檔中心中包含了比較詳細的開發流程。

3.工具欄

1)文件管理

  功能描述:控制文件管理器的展開或收起。

  操做步驟:文件管理器窗口默認展開,點擊左側工具欄「文件管理」控制文件管理器窗口的展開與收起

2)全局搜索

  功能描述:提供全局的搜索、替換功能。

  操做步驟:

  第一步:點擊左側工具欄「搜索」按鈕,調出全局搜索功能窗口;

  第二步:輸入關鍵字便可即時出現搜索結果,關鍵字支持區分字母大小寫、全字匹配、正則表達式;

  第三步:點擊搜索結果自動跳轉到當前文件;

  第四步:替換操做支持單個替換和所有替換,輸入替換內容後,能夠選擇單個替換和所有替換;

3)運行算法

  功能描述:對進行編譯成功的電路文件進行測試運行。

  操做步驟:

  第一步:點擊左側工具欄「運行」按鈕,調出運行算法面板;

  第二步:若是當前選中的工程沒有編譯成功,則提示沒有數據;

  第三步:若是當前選中的工程已經編譯成功,則可輸入輸入項運行該算法;

  第四步:運行成功,則會在輸出欄提示運行成功並輸入運行結果;   

  第五步:運行成功後,便可看到運行結果,格式如「name:value」,」name」即爲當前運行的算法代碼中的輸出變量的名稱,」value」爲算法代碼中輸出變量的值。

4)算法庫

  功能描述:全部已上傳到算法中心的算法,均可在算法庫中調用,點擊圖標進入算法庫頁面。

  操做步驟:

  注意:進入算法庫須要用戶已登陸,未登陸狀態則須要進行登陸。

  第一步:點擊左側工具欄「算法庫」按鈕,調出算法庫面板;算法列表中展現每個算法的名稱、簡介和發佈者,支持關鍵字搜索算法;

  第二步:點擊某一個算法,即跳往該算法的詳情界面,開發者能夠了解到算法更多的信息,並提供了下載該算法的功能入口。

  功能限制:須要開發者登陸以後才能訪問,若是開發者未登陸,IDE會自動彈出登陸彈窗提示開發者登陸。

3.編輯區

1)語法檢查

  功能描述:對當前編輯的文件執行「保存」或者「編譯」的操做時,會進行語法檢查,錯誤的地方有紅色叉號標識,鼠標懸浮在該行文字上時會顯示具體的錯誤信息。

2)查找/替換

  功能描述:輸入關鍵字進行查找/替換,支持區分字母大小寫、全字匹配、正則表達式。搜索結果支持上一個、下一個定位操做,替換操做支持單個替換和當前編輯區文件所有替換操做。

3)多個窗口展現

  功能描述:編輯區打開文件過多時,隱藏的部分文件可在右側「更多文件」入口打開。

  操做步驟:點擊右側更多文件「...」標識,便可調出文件列表,其中加黑顯示的是已經在編輯區顯示的文件,灰色顯示的是隱藏的文件;

4)窗口右鍵操做

  功能描述:提供「關閉、關閉其餘、關閉右側、關閉未更改、關閉全部」功能。

  操做步驟:選中某一文件名,單擊右鍵便可調出右鍵操做菜單。   

5)文件狀態標識

  功能描述:每一個文件名稱左側出現紅色小圓點圖標,則表示該文件更改後還沒有保存;出現綠色小圓點圖標,則表示該文件已保存。

2、快捷鍵

3、編寫流程

1.文件格式

  1. 輸入文件格式

  JUGO-IDE目前支持全部格式文件的編輯,可是編譯功能僅限於.wir格式的文件。

  1. 輸出文件格式

  在JUGO-IDE中對一個.wir格式的文件進行編譯將生成一個.gc格式的電路文件和一個.java格式的java模板文件;.gc文件可經過「導出」按鈕導出到本地,.java文件放置於工程「bin」目錄,可經過菜單欄或者工具欄中「導出到本地」功能導出到本地,.java文件可在java-sdk中使用。

2.自動補全

  **功能描述:**JUGO-IDE編輯區在輸入過程當中即時顯示自動補全提示。

3.編程

  功能描述:JUGO-IDE編輯區提供查找、替換、代碼格式化、字體放大、字體縮小、撤銷、恢復等經常使用功能。

  流程:編輯--保存--編譯

 錯誤類型反饋:

1)開發者在執行保存操做時,若是代碼中有語法錯誤,錯誤的地方行號處有紅色叉號標識,鼠標懸浮在該行文字上時會顯示具體的錯誤信息。

2)開發者在執行編譯操做時,若是編譯出錯,IDE輸出區域會有紅色的錯誤信息輸出,點擊錯誤信息,編輯區會自動打開當前發生錯誤的文件。

 措施:開發者在執行保存或者編譯時若是有錯誤信息提示,須要從新編輯文件糾錯後再執行保存或者編譯操做。  

4.運行

  功能描述:JUGO-IDE編輯區提供「查找、替換、代碼格式化、字體放大、字體縮小、撤銷、恢復」等經常使用功能。

  流程:當前工程編譯成功後執行運行

 錯誤類型反饋:  

1)當前項目沒有編譯成功

   措施:開發者須要先對當前工程進行編譯,編譯成功後才能運行算法。

2)無效參數

   措施:當前項目編譯成功後運行的時候,會對輸入參數進行類型和範圍校驗,存在不合法的參數時沒法點擊「運行」按鈕。

5.發佈

 功能限制

1)須要開發者登陸。

2)當前項目編譯成功並經過了運行測試。

  用途:開發者可將已經過運行測試的算法發佈到JUGO技術產品的算法庫中,算法庫是JUGO技術產品的算法倉庫,開發者使用JUGO-IDE發佈的算法會生成一個惟一的算法ID,經過這個算法ID能夠下載該算法,並經過JUGO-SDK使用該算法。

6.算法庫

  功能限制:須要開發者登陸。

  用途:開發者能夠訪問到JUGO技術產品的算法中心的全部算法。算法列表中展現每個算法的名稱、簡介和發佈者,支持關鍵字搜索算法;點擊某一個算法,即跳往該算法的詳情界面,開發者能夠了解到算法更多的信息,並提供了下載該算法的功能入口。   

7.導出

功能描述:開發者能夠經過導出功能將JUGO-IDE中當前選中的文件或文件夾導出到本地,文件夾的格式爲「文件夾名」.rar,文件的格式和當前選中的文件在IDE中的格式保持一致。

1.什麼是JUGO-SDK

  JUGO-SDK是JUGO技術產品面向開發者提供的安全多方計算應用開發工具包。

  開發者經過使用JUGO-SDK與其餘JUGO技術產品,能夠高效快速的開發MPC(安全多方計算)應用。每一個集成了SDK的應用將做爲計算節點接入到計算網絡中。應用調用SDK能夠實現安全多方計算以知足業務需求。

  此文檔面向開發者介紹如何使用JUGO-SDK及其相關注意事項。同時,閱讀此文檔的開發者須要具有分佈式系統中間件(Ice)的基礎知識——JUGO-SDK使用RPC協議進行數據傳輸,使用了Ice中的Glacier2進行防火牆穿透。

2.編程語言&開發環境

  支持語言:JAVA語言。

  JDK版本:JDK1.8。

  開發工具:推薦使用 IntelliJ IDEA。

  開發環境:操做系統window/linux,ICE-3.6

3.調試&運行環境

  調試環境:因爲MPC算法庫目前僅支持.so動態庫(Linux平臺運行),因此開發階段部分功能可在window上進行調試,完整的計算流程須要在Linux環境上進行。

  運行環境:目前僅支持運行在Linux環境,推薦:CentOS Linux release 7.2.1511 (Core)。

  電路文件:後綴格式規定爲:.gc

1、集成流程

一、IDE上編寫電路算法;

二、編譯算法並生成電路文件JAVA包裝類;示例查看

三、項目中引入步驟2中的JAVA包裝類;

四、集成API,完成應用開發;

2、API列表

3、API詳情

1.建立電路實例

 接口:YourCircuitWrapper circuit=new YourCircuitWrapper();

  注意:電路文件包裝類,僅可實例化一次,創建與代理鏈接。

  描述:建立電路實例,並完成鏈路初始化工做,與JUGO代理服務進行會話鏈接,後續數據通訊都依賴此鏈接通道進行。

  參數說明:

   返回參數說明:   
 示例代碼

1.    try {  
2.      YourCircuitWrapper yourCircuit=new YourCircuitWrapper("mycircuitId","admin01","password",NodeCommunicateMode.SERVICE  
3.    , "ProxyGlacier2/router:tcp -h 192.168.7.167 -p 4502 -t 11000", null, "--Ice.Config=config.conf");  
4.    } catch (MPCException e) {  
5.      
6.    }
複製代碼

2.開啓計算任務

  接口:yourCircuit.doCompute();

  注意:調用前請確保成功構建了YourCircuitWrapper實例對象。

  描述:經過調用doCompute,能夠啓動一次計算任務。該接口由任務發起方進行調用,被邀請方無需調用該接口。

  參數說明:   

   返回參數說明:   
 示例代碼

1.    try {  
2.        String[] argsAttach = new String[]{"n=3","m=4"};  
3.        List<String> takerList = Arrays.asList(new String[]{"admin01","admin02"});  
4.        List<String> resulReceiverList = Arrays.asList(new String[]{"admin01"});  
5.        yourCircuit.doCompute("1111", argsAttach, takerList, resulReceiverList);  
6.    } catch (MPCException e) {  
7.        e.printStackTrace();  
8.    }

複製代碼

3.發起方獲取源數據

  接口:yourCircuit.setInputCallbackForORG();

  注意:此函數用於設置計算髮起方的源數據獲取方式。

  描述:此函數接受一個InputCallback()接口的具體實現, 可自行定義計算源數據的獲取邏輯。設置時請注意電路文件定義的數據結構規範,若是是數組則須要保證數組元級及元素個數與預約義的一致。

  參數說明

   返回參數說明:   
 示例代碼

1.    yourCircuit.setInputCallbackForORG(new InputCallback<Int32[][]>() {  
2.        @Override  
3.        public Int32[][] input(String taskId, String algorithmId, String[] args) {  
4.            return new Int32[2][2];  
5.        }  
6.      
7.    @Override  
8.    public void onFailure(Throwable e){  
9.        // 異常處理  
10.    }  
11.    });
複製代碼

  說明:

    上述示例中假定生成的電路java文件中定義的入參類型爲:Int32[][],一個Int32的二維數組,且元素個數爲[2][2]。

4.收邀方獲取源數據

 接口:yourCircuit.setInputCallbackForDST();

  注意:此函數用於設置受邀發起方的源數據獲取方式。

  描述:此函數接受一個InputCallback()接口的具體實現, 可自行定義計算源數據的獲取邏輯。設置時請注意電路文件定義的數據結構規範,若是是數組則須要保證數組元級及元素個數與預約義的一致。

  參數說明:   

   返回參數說明
   示例代碼

1.    yourCircuit.setInputCallbackForDST(new InputCallback<Int32[][]>() {  
2.        @Override  
3.        public Int32[][] input(String taskId, String algorithmId, String[] args) {  
4.            return new Int32[3][3];  
5.        }  
6.      
7.    @Override  
8.    public void onFailure(Throwable e){  
9.        // 異常處理  
10.    }  
11.    });
複製代碼

  說明:

  上述示例中假定生成的電路java文件中定義的入參類型爲:Int32[][],一個Int32的二維數組,且元素個數爲[3][3]。所以在回調函數中input的返回必定是[3][3]及的多維數組。

5.處理計算結果

  接口:yourCircuit.setOutputCallback();

  注意:N/A。

  描述:設置一個回調函數,用於處理獲取到的結果。該結果返回的數據類型與電路文件算法電路的返回類型一致。

  參數說明

  返回參數說明:   

   示例代碼

1.    yourCirciut.setOutputCallback(new OutputCallback<Int32>(Int32.class) {  
2.        @Override  
3.        public void onResult(String taskId, String algorithmId, int resultCode, Int33 result) {  
4.    // 處理結果  
5.        }  
6.      
7.    @Override  
8.    public void onFailure(Throwable e){  
9.      // 異常處理  
10.    }  
11.    }
複製代碼

  注意:示例中的數據類型(Int32)由具體電路文件決定。

6.處理邀請結果

  接口:InvitationManager->invite();

  注意:此接口提供了默認實現,如需更改則須要在調用doCompute()前從新進行設置。可調用yourCircuit.setInvitationManager();進行更改。

  描述:一個接口,並提供回調函數,當節點收到計算邀請後該回調會被觸發,可在回調函數中提供業務邏輯來決定是否贊成計算邀請。該接口提供了一個默認實現類(DefaultInvitationManager)

  參數說明

   返回參數說明:   
   示例代碼

1.    yourCircuit.setInvitationManager(new InvitationManager() {  
2.        @Override  
3.        public boolean invite(String taskId, String starter, String algorithmId, int numberOfParticipants, List<String> takersList) {  
4.            // 這裏實現業務邏輯  
5.            return true;  
6.        }  
7.    });
複製代碼

7.獲取本地電路文件

  接口:CircuitManager -> getLocal();

  注意:如需更改則在調用doCompute前從新進行設置。可調用yourCircuit.setCircuitManagerManager();預先設置。

  描述:此接口提供了默認實現類(DefaultCircuitManager)。當須要自定義電路文件路徑時可從新提供接口實現。JUGO-SDK默認會根據算法ID(algorithmId)去電路倉庫進行下載(由JUGO開發服務平臺提供)。

  參數說明

   返回參數說明:   
   示例代碼

1.    // 示例提供了根據不一樣ID返回不一樣文件類型的電路文件  
2.    yourCircuit.setCircuitManager(new CircuitManager() {  
3.        @Override  
4.        public String getLocal(String algorithmId) {  
5.            if(algorithmId.equals("1")){  
6.                return "/home/juzhen/work2018/jugo/jugompc/circuits-files/adder_32bit.gc";  
7.            }  
8.            if(algorithmId.equals("2")){  
9.                return "/home/juzhen/work2018/jugo/jugompc/circuits-files/AES-expanded.gc";  
10.            }  
11.            return "";  
12.        }  
13.    });
複製代碼

4、JUGO-SDK使用步驟

1.引入JUGO-SDK

  SDK倉庫地址:http://sdk.juzix.net/content/groups/public/

  Maven

1.    <dependency>  
2.    <groupId>com.juzix.jugo</groupId>  
3.    <artifactId>mpc-node-sdk</artifactId>  
4.    <version>1.1.0-SNATSHOP</version>  
5.    </dependency>
複製代碼

  Gradle

1.    compile "com.juzix.jugo:mpc-node-sdk:1.1.0-SNATSHOP"
複製代碼

  Jar包引用下載https://jugo.juzix.net/file/JAVA-SDK.zip

  下載後會獲得一個zip包,解包後將對應jar包所有拷貝到本地項目中依賴引用。

2.算法動態庫

  底層算法邏輯使用c/c++進行編寫,JAVA使用JNI進行調用。目前僅提供了Linux環境下的動態庫(.so),所以測試環節需在Linux完成。下載解壓後會獲得一個libjuzixmpc.so動態庫文件,須要更改配置文件mpc-node-config.conf進行配置 。此操做是必須的,不然沒法完成計算操做。

  算法動態庫 下載https://jugo.juzix.net/file/libjuzixmpc.zip

3.配置文件建立

  JUGO-SDK使用默認方式獲取電路文件時須要一些配置信息,如自定義實現了CircuitManager,則無需提供配置文件。此處規定,配置文件名爲:mpc-node-config.conf,必須在目錄config下。配置文件可位於classes源碼目錄或者{user.dir}工做目錄。若是使用IDEA開發工具,則可將配置文件放置在:{project.dir}/src/main/resources/config/mpc-node-config.conf。

  文件內容以下:

1.    node {  
2.         isDebug=false  
3.         # 是否使用Glacier2進行消息路由 false 不使用, true 使用 
4.         isRouterModel=false  
5.    circuit {  
6.    # 電路文件下載地址,此處將IP和port更改成實際地址便可 
7.    download.url = "http://xxx:port/file_api/file/download?arithmeticId=%s&user=%s"  
8.    # 電路文件本地存儲目錄 
9.    local.dirPath = /home/test/developer/jugompc  
10.    }  
11.    jni {  
12.       # jni調用的動態庫文件目錄 
13.       library.path=/home/test/developer/jnilib  
14.    }  
15.    }
複製代碼

  注:完成以上2步操做基本完成了對JUGO-SDK的集成。請務必注意算法庫的文件路經配置正確。

4.配置節點爲服務節點

  在啓動一個節點的時,能夠將節點做爲一個服務節點啓動。可直接接收對端(計算比較端)的數據,而不須要經過JUGO代理服務回調傳輸。在調用API-初始化節點(initContext)時,若是參數mode傳入SERVER,則必須進行配置操做。若是傳入CALLBACK則可忽略此步驟。

  當節點須要做爲服務節點啓動時,需提供服務配置文件,並在初始化時經過參數args傳入。

  服務配置文件:config.node-server

1.    #當前節點做爲服務提供的Endpoints信息 
2.    NodeServer.Endpoints=tcp -p 12001  
3.    Server.Trace=1  
4.    Ice.ThreadPool.Server.Size=10  
5.    Ice.ThreadPool.Server.SizeMax=10  
6.    Ice.ThreadPool.Client.Size=10  
7.    Ice.ThreadPool.Client.SizeMax=10
複製代碼

  注:在建立電路實例中的

args=new String[]{「--Ice.Config=config.node-server」}
複製代碼

5.配置節點Glacier2

  注意:若是配置文件mpc-node-config中,isRouterModel=false, 則無需啓動節點Glacier2,該模式標識僅使用節點直連進行消息傳遞而不須要Glacier2進行消息路由。

  Glacier2是ICE特有的應用層防火牆和路由器,提供了安全校驗、消息路由和事務管理等功能。這裏爲了防止網絡形成數據傳輸阻礙,引入Glacier2進行網絡穿透。將節點服務放置在Glacier2以後,由Glacier2進行消息接收並路由到目標服務。

  Glacier2配置文件:config.glacier2-node-server

1.    #Glacier2實例名 
2.    Glacier2.InstanceName=NodeGlacier2  
3.    # 客戶端訪問Endpoints信息 
4.    Glacier2.Client.Endpoints=tcp -h 0.0.0.0 -p 4503 -t 12000  
5.    Glacier2.Server.Endpoints=tcp  
6.    # 會話建立服務地址,此處鏈接到節點服務的EEndpoings 
7.    Glacier2.SessionManager=NodeSessionManager:tcp -h 192.168.7.168 -p 12001  
8.    # 權限校驗服務地址,此處鏈接到節點服務的Endpoints 
9.    Glacier2.PermissionsVerifier=NodePermissionsVerifier:tcp -h 192.168.7.168 -p 12001  
10.    Glacier2.SessionTimeout=30  
11.    Glacier2.Server.Buffered=0  
12.    Glacier2.Client.Buffered=0  
13.    IceSSL.Trace.Security=1  
14.    Ice.Trace.Network=1  
15.    Ice.Warn.Connections=1  
16.    Ice.Trace.Protocol=1  
17.    Ice.ThreadPool.Server.Size=10  
18.    Ice.ThreadPool.Server.SizeMax=10  
19.    Ice.ThreadPool.Client.Size=10  
20.    Ice.ThreadPool.Client.SizeMax=10
複製代碼

  注:配置中爲基本的Glacier2信息配置,具體含義請參考ICE詳細文檔查看。https://jugo.juzix.net/file/Ice-3.6b.pdf

  啓動Glacier2以前請確保本地已安裝Ice並可正常使用。

  啓動Glaicer2命令爲:

glacier2router --Ice.Config=./config.glacier2-node-server
複製代碼

  使用Glacier2後,在調用節點初始化(initContext)時的參數jugoEndpoint=NodeGlacier2/router:tcp -h 127.0.0.1-p4503-t12000。後續再計算過程當中對端節點會經過該Endpoints信息直接調用Glacier2進行數據轉發路由到目標服務。

5、返回碼一覽

更多內容能夠參考視頻: 安全多方計算MPC視頻課程

產品實操請訪問:JUGO開放服務平臺

相關文章
相關標籤/搜索