交易所系統(tǒng)開發(fā)規(guī)則詳情丨去中心化交易所系統(tǒng)開發(fā)成熟功能及源碼平臺
一條完整的區(qū)塊鏈,是由眾多分布式賬本集合而成的一種數(shù)據(jù)鏈。那么隨著其中某個賬本的記錄完成,區(qū)塊也就隨之生成。區(qū)塊的生成過程也就可以理解為是交易的一個記賬過程。但光有區(qū)塊還是不夠的,還得需要“鏈”將所有已有區(qū)塊都連起來。那么所謂的“鏈”,就是時間戳技術以及某種智能合約。
所謂的區(qū)塊鏈,就是由眾多的數(shù)據(jù)區(qū)塊,按照一定規(guī)律順序所組成的鏈條。
每一個區(qū)塊中儲存有一定的數(shù)據(jù)或信息,它們根據(jù)各自誕生的時間先后順序連接成鏈條。所形成的這個鏈條是可以被保存在所有的服務器中。也就是說,只要整個體系中有任意一臺服務器可以正常運作,整條區(qū)塊鏈就是安全的。
package main
import(
"crypto/sha256"
"encoding/hex"
"fmt"
)
func main(){
//定義消息
message:="Hello,world!"
//計算SHA-256哈希值
hash:=sha256.Sum256([]byte(message))
//輸出哈希值
fmt.Println("Message:",message)
fmt.Println("Hash:",hex.EncodeToString(hash[:]))
}
package main
import(
"crypto/ecdsa"
"crypto/elliptic"
"crypto/rand"
"crypto/sha256"
"fmt"
"golang.org/x/crypto/ripemd160"
"math/big"
)
func main(){
//選擇橢圓曲線secp256k1和基點G
curve:=elliptic.P256k1()
x,_:=new(big.Int).SetString("79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798",16)
y,_:=new(big.Int).SetString("483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8",16)
G:=ecdsa.PublicKey{Curve:curve,X:x,Y:y}
//生成私鑰
privateKey,err:=ecdsa.GenerateKey(curve,rand.Reader)
if err!=nil{
fmt.Println("Generate Private Key Error:",err)
return
}
//生成公鑰
publicKey:=privateKey.PublicKey
//對公鑰進行哈希運算
publicKeyBytes:=elliptic.Marshal(curve,publicKey.X,publicKey.Y)
hash:=sha256.Sum256(publicKeyBytes)
ripemd160Hasher:=ripemd160.New()
_,err=ripemd160Hasher.Write(hash[:])
if err!=nil{
fmt.Println("Hash Public Key Error:",err)
return
}
hash160:=ripemd160Hasher.Sum(nil)
//添加版本號和校驗碼
version:=[]byte{0}
payload:=append(version,hash160...)
checksum:=sha256.Sum256(sha256.Sum256(payload))
payload=append(payload,checksum[:4]...)