The core protocol of WoopChain
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
woop/client/utils.go

50 lines
1.2 KiB

package client
import (
"bytes"
"io"
"log"
"net/http"
"sync"
"github.com/harmony-one/harmony/crypto/pki"
)
// AddressToIntPriKeyMap is the map from address to private key.
var AddressToIntPriKeyMap map[[20]byte]int // For convenience, we use int as the secret seed for generating private key
// AddressToIntPriKeyMapLock is the lock of AddressToIntPriKeyMap.
var AddressToIntPriKeyMapLock sync.Mutex
// InitLookUpIntPriKeyMap inits AddressToIntPriKeyMap.
func InitLookUpIntPriKeyMap() {
if AddressToIntPriKeyMap == nil {
AddressToIntPriKeyMapLock.Lock()
AddressToIntPriKeyMap = make(map[[20]byte]int)
for i := 1; i <= 10000; i++ {
AddressToIntPriKeyMap[pki.GetAddressFromInt(i)] = i
}
AddressToIntPriKeyMapLock.Unlock()
}
}
// LookUpIntPriKey looks up private key by address.
func LookUpIntPriKey(address [20]byte) (int, bool) {
value, ok := AddressToIntPriKeyMap[address]
return value, ok
}
// DownloadURLAsString downloads url as string.
func DownloadURLAsString(url string) (string, error) {
response, err := http.Get(url)
buf := bytes.NewBufferString("")
if err != nil {
log.Fatal(err)
} else {
defer response.Body.Close()
_, err := io.Copy(buf, response.Body)
if err != nil {
log.Fatal(err)
}
}
return buf.String(), err
}