本人没有接触过比特币和区块链,近日面试接触了一家公司,给了这道面试题。搜了下,看网上资料不多。 V 友能不能帮忙提供相关思路和资料?若能提供参考代码可付费求!
1
aptx4689 2020-03-18 20:46:40 +08:00 1
pycoin
|
2
qq976739120 2020-03-18 20:54:06 +08:00 1
这也太简单了吧.....把你的标题翻译成英文,然后去 google
|
3
dzdh 2020-03-18 21:00:26 +08:00 1
1.有一个比特币钱包地址和其私钥
2.通过 HTTP 接口或者自行同步全网数据获取到一个指定钱包地址的所有 unspent 交易获取其 txid 3.分别将每一笔交易当作 input 指定其付款到的目标地址并进行签名 4.通过本地钱包或者公网接口将签名过的交易广播到公网 php exp: ```php $from_address = 'base32 string'; $from_address_wifkey = 'key'; $input_txid = 'sha'; $input_amount = 0.003; $to_address = 'base32 string'; $amount = 0.001; Transaction::builder()->input($input_txid,$input_amount) ->to($address2, $amount) ->hex(); // 把地址 1 的一笔收入记录 txid(入账 0.003) 拿出来 付给 address2(0.001) // 然后 txid 被标记为 spent(从 unspent) 然后给 address2 0.001 // 剩下 0.002 怎么办?没有特殊处理的“富裕”金额将被作为全网确认奖励消耗 // 再如 from(txid,10)->to(address2,1) 剩 9 个 想付 2 个作为确认奖励那就再加一个收款方为付款方(我付给我自己) 7 个 // 即: from(txid,10)->to(address2,1)->to(from_address,7) : 10=7-1=2(“无人认领”的金额将作为奖励) to(from_address)视为“找零” ``` |
6
stevenbipt 2020-03-19 09:56:27 +08:00 1
常见的做法先打包好一个 tx,将整个 tx 使用 rlp 序列化出来然后对序列化的字符串进行离线签名(签名用到了私钥),然后签完名以后得到一个字符串,将这个签名了交易的字符串广播到全网,有的做法是直接签 tx 的 hash,因为整个 tx 序列化出来也蛮大的
|
7
stevenbipt 2020-03-19 09:58:49 +08:00 1
@stevenbipt 这个做法的账户模型是 UTXO 模型,Tx 里面包括了[]Txin 和[]Txout
|
8
iqingqian OP @stevenbipt #7 大佬问个问题,我在 bitcoin core 获取地址对应的私钥。然后用代码验证,将这个私钥生成的地址和 bitcoin core 中的地址不一样呢?
|
9
sunxiansong 2020-03-19 13:17:13 +08:00 1
如果没有接触过比特币,也没有兴趣,不干币圈这一行,那建议就放弃吧。
这个是典型的冷钱包模式,核心就是存放私钥的设备不联网或者高度网络隔离。那么只要把创建好的交易给存储私钥的设备签名,完了弄上链就行了。创建交易最简单的可以用钱包 RPC,然后传给冷钱包签名(离线的话思路也不少,消息订阅、手工 USB 拷贝、相机扫描等等),签名好了再广播出去。 和节点通信就是一般的 JSON RPC, 签名麻看你用什么语言,很多语言都有现成的签名库。 |
10
iqingqian OP @sunxiansong 老哥说说放弃的原因啊
|
11
lc7029 2020-03-19 16:35:42 +08:00 1
用过比太钱包,它的冷热钱包思路很好,冷钱包不联网,热钱包无私钥。发币时通过冷钱包签名,二维码传输签名信息到热钱包广播。
这里是我写的使用文档,共两篇 danteng.org/bither-wallet-1 danteng.org/bither-wallet-2 |
12
sunxiansong 2020-03-27 17:05:40 +08:00
@iqingqian
如果没有兴趣,不干币圈这一行,那就没有必要花费精力研究加密货币 加密货币涉及到 加密算法、共识机制、P2P 网络、记账模型等等,和一般的 CRUD 应用差别很大,入门前期需要花费大量的精力研究,可能还需要一定的数学、密码学基础。而且还在不断的衍进,要不停的学习跟进。 另一方面,虽说区块链现在是风口,国家也在推,但加密货币的前景还是不太明了,特别是公链项目有很多坑、泡沫。 年轻的话可以多尝试,求稳的话还是找个靠谱的公司、项目。 |