mirror of
https://github.com/muun/recovery.git
synced 2025-11-11 06:20:16 -05:00
Release v0.3.0
This commit is contained in:
16
vendor/github.com/btcsuite/btcwallet/wallet/txrules/LICENSE
generated
vendored
Normal file
16
vendor/github.com/btcsuite/btcwallet/wallet/txrules/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
ISC License
|
||||
|
||||
Copyright (c) 2013-2017 The btcsuite developers
|
||||
Copyright (c) 2015-2016 The Decred developers
|
||||
|
||||
Permission to use, copy, modify, and distribute this software for any
|
||||
purpose with or without fee is hereby granted, provided that the above
|
||||
copyright notice and this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
8
vendor/github.com/btcsuite/btcwallet/wallet/txrules/go.mod
generated
vendored
Normal file
8
vendor/github.com/btcsuite/btcwallet/wallet/txrules/go.mod
generated
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
module github.com/btcsuite/btcwallet/wallet/txrules
|
||||
|
||||
go 1.12
|
||||
|
||||
require (
|
||||
github.com/btcsuite/btcd v0.0.0-20190824003749-130ea5bddde3
|
||||
github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d
|
||||
)
|
||||
33
vendor/github.com/btcsuite/btcwallet/wallet/txrules/go.sum
generated
vendored
Normal file
33
vendor/github.com/btcsuite/btcwallet/wallet/txrules/go.sum
generated
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII=
|
||||
github.com/btcsuite/btcd v0.0.0-20190824003749-130ea5bddde3 h1:A/EVblehb75cUgXA5njHPn0kLAsykn6mJGz7rnmW5W0=
|
||||
github.com/btcsuite/btcd v0.0.0-20190824003749-130ea5bddde3/go.mod h1:3J08xEfcugPacsc34/LKRU2yO7YmuT8yt28J8k2+rrI=
|
||||
github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f h1:bAs4lUbRJpnnkd9VhRV3jjAVU7DJVjMaK+IsvSeZvFo=
|
||||
github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA=
|
||||
github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d h1:yJzD/yFppdVCf6ApMkVy8cUxV0XrxdP9rVf6D87/Mng=
|
||||
github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg=
|
||||
github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg=
|
||||
github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY=
|
||||
github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc=
|
||||
github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY=
|
||||
github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs=
|
||||
github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495 h1:6IyqGr3fnd0tM3YxipK27TUskaOVUjU2nG45yzwcQKY=
|
||||
github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
|
||||
github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
|
||||
github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ=
|
||||
github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4=
|
||||
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||
github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||
github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
|
||||
golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44 h1:9lP3x0pW80sDI6t1UMSLA4to18W7R7imwAI/sWS9S8Q=
|
||||
golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
|
||||
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
|
||||
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
98
vendor/github.com/btcsuite/btcwallet/wallet/txrules/rules.go
generated
vendored
Normal file
98
vendor/github.com/btcsuite/btcwallet/wallet/txrules/rules.go
generated
vendored
Normal file
@@ -0,0 +1,98 @@
|
||||
// Copyright (c) 2016 The btcsuite developers
|
||||
// Use of this source code is governed by an ISC
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// Package txrules provides transaction rules that should be followed by
|
||||
// transaction authors for wide mempool acceptance and quick mining.
|
||||
package txrules
|
||||
|
||||
import (
|
||||
"errors"
|
||||
|
||||
"github.com/btcsuite/btcd/txscript"
|
||||
"github.com/btcsuite/btcd/wire"
|
||||
"github.com/btcsuite/btcutil"
|
||||
)
|
||||
|
||||
// DefaultRelayFeePerKb is the default minimum relay fee policy for a mempool.
|
||||
const DefaultRelayFeePerKb btcutil.Amount = 1e3
|
||||
|
||||
// GetDustThreshold is used to define the amount below which output will be
|
||||
// determined as dust. Threshold is determined as 3 times the relay fee.
|
||||
func GetDustThreshold(scriptSize int, relayFeePerKb btcutil.Amount) btcutil.Amount {
|
||||
// Calculate the total (estimated) cost to the network. This is
|
||||
// calculated using the serialize size of the output plus the serial
|
||||
// size of a transaction input which redeems it. The output is assumed
|
||||
// to be compressed P2PKH as this is the most common script type. Use
|
||||
// the average size of a compressed P2PKH redeem input (148) rather than
|
||||
// the largest possible (txsizes.RedeemP2PKHInputSize).
|
||||
totalSize := 8 + wire.VarIntSerializeSize(uint64(scriptSize)) +
|
||||
scriptSize + 148
|
||||
|
||||
byteFee := relayFeePerKb / 1000
|
||||
relayFee := btcutil.Amount(totalSize) * byteFee
|
||||
return 3 * relayFee
|
||||
}
|
||||
|
||||
// IsDustAmount determines whether a transaction output value and script length would
|
||||
// cause the output to be considered dust. Transactions with dust outputs are
|
||||
// not standard and are rejected by mempools with default policies.
|
||||
func IsDustAmount(amount btcutil.Amount, scriptSize int, relayFeePerKb btcutil.Amount) bool {
|
||||
return amount < GetDustThreshold(scriptSize, relayFeePerKb)
|
||||
}
|
||||
|
||||
// IsDustOutput determines whether a transaction output is considered dust.
|
||||
// Transactions with dust outputs are not standard and are rejected by mempools
|
||||
// with default policies.
|
||||
func IsDustOutput(output *wire.TxOut, relayFeePerKb btcutil.Amount) bool {
|
||||
// Unspendable outputs which solely carry data are not checked for dust.
|
||||
if txscript.GetScriptClass(output.PkScript) == txscript.NullDataTy {
|
||||
return false
|
||||
}
|
||||
|
||||
// All other unspendable outputs are considered dust.
|
||||
if txscript.IsUnspendable(output.PkScript) {
|
||||
return true
|
||||
}
|
||||
|
||||
return IsDustAmount(btcutil.Amount(output.Value), len(output.PkScript),
|
||||
relayFeePerKb)
|
||||
}
|
||||
|
||||
// Transaction rule violations
|
||||
var (
|
||||
ErrAmountNegative = errors.New("transaction output amount is negative")
|
||||
ErrAmountExceedsMax = errors.New("transaction output amount exceeds maximum value")
|
||||
ErrOutputIsDust = errors.New("transaction output is dust")
|
||||
)
|
||||
|
||||
// CheckOutput performs simple consensus and policy tests on a transaction
|
||||
// output.
|
||||
func CheckOutput(output *wire.TxOut, relayFeePerKb btcutil.Amount) error {
|
||||
if output.Value < 0 {
|
||||
return ErrAmountNegative
|
||||
}
|
||||
if output.Value > btcutil.MaxSatoshi {
|
||||
return ErrAmountExceedsMax
|
||||
}
|
||||
if IsDustOutput(output, relayFeePerKb) {
|
||||
return ErrOutputIsDust
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// FeeForSerializeSize calculates the required fee for a transaction of some
|
||||
// arbitrary size given a mempool's relay fee policy.
|
||||
func FeeForSerializeSize(relayFeePerKb btcutil.Amount, txSerializeSize int) btcutil.Amount {
|
||||
fee := relayFeePerKb * btcutil.Amount(txSerializeSize) / 1000
|
||||
|
||||
if fee == 0 && relayFeePerKb > 0 {
|
||||
fee = relayFeePerKb
|
||||
}
|
||||
|
||||
if fee < 0 || fee > btcutil.MaxSatoshi {
|
||||
fee = btcutil.MaxSatoshi
|
||||
}
|
||||
|
||||
return fee
|
||||
}
|
||||
Reference in New Issue
Block a user