# btcDBserver **Repository Path**: X_mans/btcDBserver ## Basic Information - **Project Name**: btcDBserver - **Description**: 将bitcoin 中的交易数据和我区块信息存入数据库,为区块链浏览器提供数据 - **Primary Language**: NodeJS - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2019-11-12 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MToken #### 项目介绍 基于以太坊的ERC20 代币,跨链交易 #### 软件架构 软件架构说明 #### 安装教程 http://www.btc38.com/altcoin/btc/2847.html http://coinpunk.github.io/bitcoinjs-lib/ //创建交易 https://bitcore.io/guides/i-made-this https://www.npmjs.com/package/bitcoin-core // 比特币交易构造过程: (一)、整体流程: 1、查找未花费交易输出UTXO listunspent 2、构造原始交易 createrawtransaction 3、交易签名 signrawtransactionwithwallet 4、广播交易 sendrawtransaction (二)、bitcoin-cli命令: 1、listunspent (mixconf maxconf ["address",...][include_unsafe][query_options]) 例如:bitcoin-cli listunspent 0 100 "2N1T5gMyPGEHckkq62w2U45Mii91sZN5rnR" 列出某个地址未花费的交易输出 mixconf maxconf表示该笔收入交易的确认数范围,不加参数,默认值显示被确认的UTXO(因为只会花费已被确认的UTXO),如果还需要列出还未确认的交易,将mixconf设置未0。也就是说带参数0的listunspent命令,可以显示未被确认的交易 listunspent列出的是一组UTXO数据,有用的是其中的txid,vout,这些数据将在执行createrawtransaction的时候作为参数使用 2、createrawtransaction [{"txid":txid,"vout":n},...] [{address:amount,...},{data:hex},...] (locktime) (replaceable) 例如:将1BTC 发送至 2N1T5gMyPGEHckkq62w2U45Mii91sZN5rnR,支付0.0001BTC作为矿工费,输入交易的金额为2,输出为:1+0.0001=1.0001,那么还剩余 2-1.0001=0.9999,将此作为找零发回给自己 执行:createrawtransaction [{"txid":"92237161cbb4fd5de7b8e336c64db249b5e329f5e0ee57a29ea0cdff07dd6bbb","vout":0}] {"2N1T5gMyPGEHckkq62w2U45Mii91sZN5rnR":1,"2N1T5gMyPGEHckkq62w2U45Mii91sZN5rnR":0.9999} 如果不写找零地址和找零金额,那么会将全部的找零金额作为交易的手续费 交易手续费不得高于0.1BTC,如果交易手续费大于0.1BTC,则该交易会被认为是不合理的高手续费交易,此类交易虽然在创建、签名过程中正常,但在交易广播后会报错,说明交易广播失败。 3、signrawtransactionwithwallet "hexstring" signrawtransaction:[{"txid":txid,"vout":n,"scriptPubKey":hex},"redeemScript":hex,...}] [,...] [sighashtype="ALL"] 第一个参数是创建的待签名交易的16进制字符串 第二个参数有点类似创建交易时的参数,不过要多出一个公钥字段scriptPubKey,其他节点验证交易时是通过公钥和签名来完成的,所以要提供公钥;如果是合成地址,则需要提供redeemScript 第三个参数是即将花费的币所在地址的私钥,用来对交易进行签名,如果该地址的私钥已经导入到bitcoind 中,则无需显示提供。 最后一个参数表示签名类型,(3种签名类型) 签名之前需要找到scriptPubKey,提取输入交易信息即可获取(也可以根据其公钥自行计算),由命令:getrawtransaction (verbose=0)完成 4、sendrawtransaction "hexstring" 将交易进行全网广播,等待网络传播到所以节点,约10~60秒广播至全球节点,这取决于发送交易节点的网络连接状况 如果交易金额不足,则会报错,交易广播失败, 如果交易手续费过高,则会报错,交易广播失败,(手续费要<0.1 BTC) 如果交易手续费过低,则会报错,交易广播失败,(手续费要>0.000001 BTC) (三)bitcoin-cli实现比特币交易: 0、bitcoind -datadir="E:\martin\bitcoin" -conf="E:\martin\bitcoin\conf\bitcoin.conf" -server -rpcbind=localhost:8888 -rpcuser="bit" -rpcpassword=123 -rpcallowip="localhost" -regtest 1、bitcoin-cli -datadir="E:\martin\bitcoin" -conf="E:\martin\bitcoin\conf\bitcoin.conf" -rpcconnect="localhost" -rpcport=8888 -rpcuser="bit" -rpcpassword=123 -regtest listunspent 2、bitcoin-cli -datadir="E:\martin\bitcoin" -conf="E:\martin\bitcoin\conf\bitcoin.conf" -rpcconnect="localhost" -rpcport=8888 -rpcuser="bit" -rpcpassword=123 -regtest createrawtransaction "[{\"txid\":\"17dd9862a2485460d857f0402c734089301b2cfd9aaba594c492cc2c9ee0cdb0\",\"vout\":0}]" "{\"mrtNnxQFge8z6BHnQNTqW4HrL52osdDiGi\":49,\"2NAMJ3pVfuSLFuPv91uzACUKgUxp5cDiFvE\":0.999993}" 3、bitcoin-cli -datadir="E:\martin\bitcoin" -conf="E:\martin\bitcoin\conf\bitcoin.conf" -rpcconnect="localhost" -rpcport=8888 -rpcuser="bit" -rpcpassword=123 -regtest signrawtransactionwithwallet "0200000001b0cde09e2ccc92c494a5ab9afd2c1b308940732c40f057d8605448a26298dd170000000000ffffffff0200111024010000001976a9147cb691a893588603544eb1e452c7afe765869c1388ac44def5050000000017a914bba00625ceb78c7da8788ccedda845f8ce027c458700000000" 4、bitcoin-cli -datadir="E:\martin\bitcoin" -conf="E:\martin\bitcoin\conf\bitcoin.conf" -rpcconnect="localhost" -rpcport=8888 -rpcuser="bit" -rpcpassword=123 -regtest sendrawtransaction "0200000001b0cde09e2ccc92c494a5ab9afd2c1b308940732c40f057d8605448a26298dd17000000004847304402203a7b7dc3f655072cdcb6e369119c4e7a89ee796a525683efa59ba8a45e7bfaac02201cb85e566bd83d2b015e9bdea2a45322ee325c8b1b899eaa018336c73b5a380d01ffffffff0200111024010000001976a9147cb691a893588603544eb1e452c7afe765869c1388ac44def5050000000017a914bba00625ceb78c7da8788ccedda845f8ce027c458700000000" #### 使用说明 1. xxxx 2. xxxx 3. xxxx #### 参与贡献 1. Fork 本项目 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 码云特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 5. 码云官方提供的使用手册 [http://git.mydoc.io/](http://git.mydoc.io/) 6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)