bitcoinjs-lib/src/networks.js

81 lines
2.3 KiB
JavaScript
Raw Normal View History

2014-04-17 05:43:34 +10:00
// https://en.bitcoin.it/wiki/List_of_address_prefixes
// Dogecoin BIP32 is a proposed standard: https://bitcointalk.org/index.php?topic=409731
2014-06-17 14:48:06 +08:00
var networks = {
2014-04-17 05:43:34 +10:00
bitcoin: {
2014-06-17 21:05:18 +10:00
magicPrefix: '\x18Bitcoin Signed Message:\n',
2014-04-17 05:43:34 +10:00
bip32: {
public: 0x0488b21e,
private: 0x0488ade4
2014-04-17 05:43:34 +10:00
},
2014-06-17 21:05:18 +10:00
pubKeyHash: 0x00,
scriptHash: 0x05,
wif: 0x80,
dustThreshold: 546, // https://github.com/bitcoin/bitcoin/blob/v0.9.2/src/core.h#L151-L162
feePerKb: 10000, // https://github.com/bitcoin/bitcoin/blob/v0.9.2/src/main.cpp#L53
estimateFee: estimateFee('bitcoin')
2014-04-17 05:43:34 +10:00
},
dogecoin: {
2014-06-17 21:05:18 +10:00
magicPrefix: '\x19Dogecoin Signed Message:\n',
bip32: {
public: 0x02facafd,
private: 0x02fac398
},
2014-06-17 21:05:18 +10:00
pubKeyHash: 0x1e,
scriptHash: 0x16,
wif: 0x9e,
dustThreshold: 0, // https://github.com/dogecoin/dogecoin/blob/v1.7.1/src/core.h#L155-L160
dustSoftThreshold: 100000000, // https://github.com/dogecoin/dogecoin/blob/v1.7.1/src/main.h#L62
feePerKb: 100000000, // https://github.com/dogecoin/dogecoin/blob/v1.7.1/src/main.cpp#L58
estimateFee: estimateFee('dogecoin')
2014-04-17 05:43:34 +10:00
},
litecoin: {
2014-06-17 21:05:18 +10:00
magicPrefix: '\x19Litecoin Signed Message:\n',
bip32: {
public: 0x019da462,
private: 0x019d9cfe
},
2014-06-17 21:05:18 +10:00
pubKeyHash: 0x30,
scriptHash: 0x05,
wif: 0xb0,
dustThreshold: 0, // https://github.com/litecoin-project/litecoin/blob/v0.8.7.2/src/main.cpp#L360-L365
dustSoftThreshold: 100000, // https://github.com/litecoin-project/litecoin/blob/v0.8.7.2/src/main.h#L53
feePerKb: 100000, // https://github.com/litecoin-project/litecoin/blob/v0.8.7.2/src/main.cpp#L56
estimateFee: estimateFee('litecoin')
},
testnet: {
2014-06-17 21:05:18 +10:00
magicPrefix: '\x18Bitcoin Signed Message:\n',
2014-04-17 05:43:34 +10:00
bip32: {
public: 0x043587cf,
private: 0x04358394
2014-04-17 05:43:34 +10:00
},
2014-06-17 21:05:18 +10:00
pubKeyHash: 0x6f,
scriptHash: 0xc4,
wif: 0xef,
dustThreshold: 546,
2014-06-17 14:48:06 +08:00
feePerKb: 10000,
estimateFee: estimateFee('bitcoin')
}
2014-05-16 15:39:17 +10:00
}
function estimateFee(type) {
return function(tx) {
var network = networks[type]
var baseFee = network.feePerKb
var byteSize = tx.toBuffer().length
var fee = baseFee * Math.ceil(byteSize / 1000)
if(network.dustSoftThreshold == undefined) return fee
tx.outs.forEach(function(e){
if(e.value < network.dustSoftThreshold) {
fee += baseFee
}
})
return fee
}
}
2014-06-17 14:48:06 +08:00
module.exports = networks