ecadlabs/signatory

View on GitHub
pkg/vault/ledger/tools.go

Summary

Maintainability
A
40 mins
Test Coverage
F
0%
package ledger

import (
    "github.com/ecadlabs/gotez/v2"
    "github.com/ecadlabs/gotez/v2/b58"
    "github.com/ecadlabs/signatory/pkg/vault/ledger/tezosapp"
)

// Utility functions used by CLI

func SetupBaking(transport string, id, keyID, chainID string, mainHWM, testHWM uint32) (pkh string, err error) {
    var hwm tezosapp.HWM
    if chainID != "" {
        cid, err := b58.ParseChainID([]byte(chainID))
        if err != nil {
            return "", err
        }
        hwm.ChainID = *cid
    }
    key, err := parseKeyID(keyID)
    if err != nil {
        return "", err
    }
    s, err := getScanner(transport)
    if err != nil {
        return
    }
    dev, err := s.open(id)
    if err != nil {
        return "", err
    }
    defer dev.Close()

    pub, err := dev.SetupBaking(&hwm, key.dt, key.path)
    if err != nil {
        return "", err
    }
    return pub.Hash().String(), nil
}

func DeauthorizeBaking(transport string, id string) error {
    s, err := getScanner(transport)
    if err != nil {
        return err
    }
    dev, err := s.open(id)
    if err != nil {
        return err
    }
    defer dev.Close()
    err = dev.DeauthorizeBaking()
    if err != nil {
        return err
    }
    return nil
}

func SetHighWatermark(transport string, id string, hwm uint32) error {
    s, err := getScanner(transport)
    if err != nil {
        return err
    }
    dev, err := s.open(id)
    if err != nil {
        return err
    }
    defer dev.Close()
    return dev.SetHighWatermark(hwm)
}

func GetHighWatermark(transport string, id string) (hwm uint32, err error) {
    s, err := getScanner(transport)
    if err != nil {
        return
    }
    dev, err := s.open(id)
    if err != nil {
        return
    }
    defer dev.Close()
    return dev.GetHighWatermark()
}

func GetHighWatermarks(transport string, id string) (mainHWM, testHWM uint32, chainID string, err error) {
    s, err := getScanner(transport)
    if err != nil {
        return
    }
    dev, err := s.open(id)
    if err != nil {
        return
    }
    defer dev.Close()
    hwm, err := dev.GetHighWatermarks()
    if err != nil {
        return
    }
    return hwm.Main, hwm.Test, gotez.ChainID(hwm.ChainID).String(), nil
}