go port
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
// Package tron implements the subset of TRON blockchain interaction required by
|
||||
// the kisstron CLI wallet: key/address handling, HTTP node access, transaction
|
||||
// building/signing/broadcasting and minimal TRC20 calls.
|
||||
package tron
|
||||
|
||||
import "errors"
|
||||
|
||||
// Sentinel errors mirror tronpy.exceptions so API failures can be mapped the
|
||||
// same way the original Python implementation does.
|
||||
var (
|
||||
ErrBadAddress = errors.New("invalid address")
|
||||
ErrAddressNotFound = errors.New("account not found on-chain")
|
||||
ErrBadKey = errors.New("invalid private key")
|
||||
ErrBadSignature = errors.New("bad signature")
|
||||
ErrBadHash = errors.New("wrong transaction hash length")
|
||||
ErrTapos = errors.New("tapos error")
|
||||
ErrTransaction = errors.New("transaction error")
|
||||
ErrTvm = errors.New("tvm error")
|
||||
ErrValidation = errors.New("validation error")
|
||||
ErrAPI = errors.New("api error")
|
||||
ErrNotFound = errors.New("not found")
|
||||
ErrTransactionNotFound = errors.New("transaction not found")
|
||||
ErrContractNotFound = errors.New("contract address not found")
|
||||
)
|
||||
|
||||
// apiError carries a node message while unwrapping to a sentinel error, so its
|
||||
// Error() string matches Python's `str(e)` (the bare message) and errors.Is
|
||||
// still identifies the failure class.
|
||||
type apiError struct {
|
||||
sentinel error
|
||||
msg string
|
||||
}
|
||||
|
||||
func (e *apiError) Error() string { return e.msg }
|
||||
func (e *apiError) Unwrap() error { return e.sentinel }
|
||||
|
||||
// wrapErr attaches a message to a sentinel error.
|
||||
func wrapErr(sentinel error, msg string) error {
|
||||
if msg == "" {
|
||||
return sentinel
|
||||
}
|
||||
return &apiError{sentinel: sentinel, msg: msg}
|
||||
}
|
||||
Reference in New Issue
Block a user