巴比特论坛

发表于 2018-11-6 17:56:00 | 显示全部楼层

查了若干资料,大概弄明白怎么转让手续费的。请指教(策略选择引用别人的):

  1. 根据转账数额及钱包内的数字货币选择策略 ,这要有一个计算和算法。
    根据转账数额确定最优的转账策略。
    ① 如果存在某UTXO值正好等于发送金额nValue(已包含手续费nFee),则将该UTXO加入目标交易集并返回成功
    ② 找出账户中UTXO值小于发送金额nValue的UTXO集vValue,并将vValue中所有UTXO值求和为nTotalLower,并找出所有UTXO值大于nValue的最小值nLowestLarger,再分两种情况
    a.2.1:nTotalLower小于nValue,如果nLowestLarger存在,则将该值对应的pcoinLowestLarger交易加入目标交易集并返回成功,如果nLowestLarger不存在,则说明“余额”不足,返回失败
    b.2.2:nTotalLower大于nValue,则使用随进逼近法(最多1000次)找出UTXO值的和nBest最接近nValue的集合vfBest,看nBest和nLowestLarger(如果存在)谁更接近nValue,则选择谁为相应的目标UTXO集,并返回成功
    2.根据最优组合策略计算出交易的字节。
    计算公式:priority = sum(input_value_in_base_units input_age)/size_in_bytes,计算结果如果小于0.576
    如果组合存在两个或以上的操作,则需要把组合内的操作分别计算相加,获得该笔交易的总的字节数量。
    3.根据字节和当前网络最优的手续费比例得出一个默认的手续费。
    获取网络上的最新的最佳交易费率标准,并以此与2相乘计算当前最优费率:
    当前交易字节
    最佳交易费率=推荐交易手续费。
    4.用户按比例自定义手续费比例。
    设定推荐手续费坐标轴位置为0,优先为1,最慢为-1。滑动按钮默认位置在推荐位置。
    当用户自定义了按钮位置,则按照:
    推荐手续费*(1+X)=用户自定义的手续费

7条回复 跳转到指定楼层

Babete | 船员 | 发表于 2018-11-6 18:07:36 | 显示全部楼层
好文 学习 感谢楼主
luyexunfeng | 船员 | 发表于 2018-11-6 18:15:07 | 显示全部楼层
纠正下:交易字节数计算公式:
交易字节数=148 * 输入数额 + 34 * 输出数额 + 10
但是不知道是怎么得出的这个公式。。。
BurntCoins | 副船长 | 发表于 2018-11-7 13:08:53 | 显示全部楼层
luyexunfeng 发表于 2018-11-6 18:15
纠正下:交易字节数计算公式:
交易字节数=148 * 输入数额 + 34 * 输出数额 + 10
但是不知道是怎么得出的 ...

每个交易包含:版本号4字节+输入个数1-9字节+[输入数据]+输出个数1-9字节字节+[输出数据]+锁定时间4字节≈10字节+输入+输出

只考虑P2PKH(1开头的地址)的话:
每个输入:txid32字节+输出序号(vin)4字节+脚本长度1字节+数字签名71字节+SigHash标志1字节+压缩公钥33字节+脚本操作码2字节(两个PUSHDATA)+nSequence4字节=148字节
每个输出:金额8字节+脚本长度1字节+公钥哈希20字节+脚本操作码5字节(DUP HASH160 PUSHDATA EQUALVERIFY CHECKSIG)=34字节

然而地址不止1开头的P2PKH这一种,还有3开头的P2SH、bc1开头的P2WPKH或P2WSH……

详情请看比特币维基:https://en.bitcoin.it/wiki/Transaction
luyexunfeng | 船员 | 发表于 2018-11-7 14:50:10 | 显示全部楼层
BurntCoins 发表于 2018-11-7 13:08
每个交易包含:版本号4字节+输入个数1-9字节+[输入数据]+输出个数1-9字节字节+[输出数据]+锁定时间4字节 ...

需要找零的情况下,是一个输入和两个输出,这个的手续费也这样加吗?
BurntCoins | 副船长 | 发表于 2018-11-7 14:59:03 | 显示全部楼层
luyexunfeng 发表于 2018-11-7 14:50
需要找零的情况下,是一个输入和两个输出,这个的手续费也这样加吗?

是啊,当然是这样
luyexunfeng | 船员 | 发表于 2018-11-7 15:03:10 | 显示全部楼层
BurntCoins 发表于 2018-11-7 14:59
是啊,当然是这样

嗯嗯,多谢见教。
minareta | 船员 | 发表于 2018-11-7 21:41:50 | 显示全部楼层
BurntCoins 发表于 2018-11-7 13:08
每个交易包含:版本号4字节+输入个数1-9字节+[输入数据]+输出个数1-9字节字节+[输出数据]+锁定时间4字节 ...

学习 感谢
高级模式
您需要登录后才可以发帖 登录 | 立即注册 | 用新浪微博登录

本版积分规则

搜索

0关注 4粉丝 61主题

作者的其他主题

返回顶部 返回列表

登录

分享 发帖