Goalng 을통한 Indy-VDR 개발
$ git clone <https://github.com/hyperledger/indy-vdr.git>
$ cd Indy-vdr
// Rust 설치
$ curl --proto '=https' --tlsv1.2 -sSf <https://sh.rustup.rs> | sh
$ source $HOME/.cargo/env
$ cargo build --lib
-확인- Compiling indy-vdr v0.4.0 (/home/isaac/indy-vdr/libindy_vdr)
// 해당 작업 안하면 go run할 때 라이브러리 못찾는다고 에러 뜸…
//$ cp /home/USERNAME/indy-vdr/target/release/deps/libindy_vdr.* /use/local/lib
$ cp /home/isaac/indy-vdr/target/debug/libindy_vdr.* /usr/local/lib // 현재시스템 적용
//$ export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH // Ubuntu
$ export LD_LIBRARY_PATH=/usr/local_lib::${LD_LIBRARY_PATH} // CentOS
$ source ~/.bash_profile
// CMake 설치(Rust 에러시)
$ cd /usr/local/src
$ wget <https://github.com/Kitware/CMake/releases/download/v3.23.2/cmake-3.23.2.tar.gz>
$ tar -zxvf cmake-3.23.2.tar.gz
$ cd cmake-3.23.2
$ ./booststrap --prefix=/usr/local/
$ ./bootstrap && make && sudo make install
$ /usr/local/bin/cmake --version
cmake version 3.23.2
CMake suite maintained and supported by Kitware (kitware.com/cmake).
// GCC-C++ 설치(CMake 에러시)
$ yum -y install gcc-c++
// 이후 make 에러시 openssl 설치
$ sudo yum install openssl-devel
// Library 렙핑 오류 = LD_LIBRARY_PATH
# vi ~/.bash_profile
package main
import (
"encoding/json"
"fmt"
"io"
"os"
"github.com/hyperledger/indy-vdr/wrappers/golang/vdr"
)
type ReadReply struct {
Type string `json:"type"`
Identifier string `json:"identifier,omitempty"`
ReqID uint32 `json:"reqId"`
SeqNo uint32 `json:"seqNo"`
TxnTime uint32 `json:"TxnTime"`
Data interface{} `json:"data"`
SignatureType string `json:"signature_type,omitempty"`
Origin string `json:"origin,omitempty"`
Dest string `json:"dest,omitempty"`
Ref uint32 `json:"ref,omitempty"`
Tag string `json:"tag,omitempty"`
}
func main() {
genesisFile, err := getGenesisFile()
if err != nil {
fmt.Print(err)
return
}
defer genesisFile.Close()
client, err := vdr.New(genesisFile)
if err != nil {
fmt.Print(err)
return
}
err = client.RefreshPool()
if err != nil {
fmt.Print(err)
return
}
rply, err := client.GetNym("4zRGZz6aGepQvqSbeguWp9")
if err != nil {
fmt.Print(err)
return
}
toByte, _ := json.Marshal(rply)
var response ReadReply
err = json.Unmarshal(toByte, &response)
if response.Data == nil {
fmt.Print("non exists did")
return
}
fmt.Println("Exist!")
fmt.Println(response.Data)
}
func getGenesisFile() (genesisFile io.ReadCloser, err error) {
genesisFile, err = os.Open("./pool_transactions_genesis")
if err != err {
return
}
return
}