iT邦幫忙

2022 iThome 鐵人賽

DAY 14
0
Web 3

如何打造屬於自己的區塊鏈錢包服務系列 第 15

[Day 14] Elrond full node (五)

  • 分享至 

  • xImage
  •  

今天開始嘗試使用官方的SDKerdgo - Golang SDK,我自己開發Golang是使用JetBrainsGoLand,只能說自從用了JetBrains全家桶後除了開發前端使用VScode外,其他的都回不去了。


首先先建立專案,
https://ithelp.ithome.com.tw/upload/images/20220928/20140358udOjhE7R05.png
然後安裝sdk後就可以使用了,由於我們需要產生密碼,所以需要另外安裝password generator

go get github.com/ElrondNetwork/elrond-sdk/erdgo
go get -u github.com/sethvargo/go-password/password

簡單的使用函式來做到

  1. 生成註記詞
  2. 使用註記詞取得私鑰
  3. 使用私鑰取得Address
  4. 使用私鑰導出pem file
  5. 使用私鑰導出json file並設定一組隨機產生密碼
  6. 導入pem file取得私鑰並取得Address
  7. 導入json file和密碼取得私鑰並取得Address

Code

package main

import (
	"fmt"
	"github.com/ElrondNetwork/elrond-sdk/erdgo"
	"github.com/sethvargo/go-password/password"
)

func main() {
	// 1. get New Mnemonic
	mnemonic, _ := erdgo.GenerateNewMnemonic()
	fmt.Printf("Generated mnemonic: %s \n", mnemonic)
	// 2. get Private Key from Mnemonic
	privateKey := erdgo.GetPrivateKeyFromMnemonic(mnemonic, 0, 0)
	fmt.Printf("Generated privateKey: %s \n", privateKey)
	// 3. get Address from private key
	address, _ := erdgo.GetAddressFromPrivateKey(privateKey)
	fmt.Printf("Generated address: %s \n", address)
	// 4. export pem file from private key
	err := erdgo.SavePrivateKeyToPemFile(privateKey, address+".pem")
	if err != nil {
		return
	}
	// generate password from json
	jsonPass, _ := password.Generate(64, 10, 10, false, false)
	fmt.Printf("Generated json password: %s \n", jsonPass)
	// 5. export json file from private key
	err = erdgo.SavePrivateKeyToJsonFile(privateKey, jsonPass, address+".json")
	if err != nil {
		return
	}
	// 6. import from pem
	pemPrivateKey, _ := erdgo.LoadPrivateKeyFromPemFile(address + ".pem")
	fmt.Printf("PrivateKey from pem: %s \n", privateKey)
	pemAddress, _ := erdgo.GetAddressFromPrivateKey(pemPrivateKey)
	fmt.Printf("Address from pem: %s \n", pemAddress)
	// 7. import from json
	jsonPrivateKey, _ := erdgo.LoadPrivateKeyFromJsonFile(address+".json", jsonPass)
	fmt.Printf("PrivateKey from json: %s \n", jsonPrivateKey)
	jsonAddress, _ := erdgo.GetAddressFromPrivateKey(jsonPrivateKey)
	fmt.Printf("Address from json: %s \n", jsonAddress)
}

執行結果
https://ithelp.ithome.com.tw/upload/images/20220928/20140358e7kKSkYHlL.png

可以看到我們成功地使用了sdk產生地址與導出和導入私鑰,
https://ithelp.ithome.com.tw/upload/images/20220928/201403582Qhs1baPVS.png

在產生Address的地方需帶入Account和Address index這個主要是之前提過的地址產生加密法的Account和External / Internal
https://ithelp.ithome.com.tw/upload/images/20220928/20140358K3nOQMCGhm.png


上一篇
[Day 13] Elrond full node (四)
下一篇
[Day 15] Elrond full node (六)
系列文
如何打造屬於自己的區塊鏈錢包服務31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言