主页 > 苹果imtoken怎么下载 > 使用 Stata 生成比特币钱包
使用 Stata 生成比特币钱包
2019年初以来,比特币最高飙升至13000美元,比特币百度指数搜索量接近历史最高点。 甚至美国总统特朗普也在他最近的推文中评论了比特币。 Facebook推出的Libra将加密货币带入了普罗大众的视野,再次点燃了大家对加密货币的热情。
了解加密货币的原理,尤其是密码学的一些知识好用的比特币钱包,对于深入理解相关内容具有重要意义。 我们经常在流行媒体上听到比特币是一种匿名的、去中心化的数字货币。 匿名意味着每个人都可以拥有无数个比特币地址,而去中心化意味着任何人都无法以低成本影响比特币网络。 所有这些特性不仅有加密技术保证,而且是一种经济的博弈行为。
比特币虽然不依赖任何中心化组织来处理交易,但仍然需要分布在全球各个节点的矿工将交易信息打包成一个区块,并广播到全网。 这个过程也称为挖矿。 ). 在此过程中,矿工将获得比特币作为奖励。 值得注意的是,在比特币系统中,所有新的比特币都是由矿工开采的。 所有比特币被挖完后,矿工的主要收益将从系统奖励变为双方支付的交易手续费。 对于矿工而言,手续费收入占比较低,约为10%。
因为挖矿需要大量电力,所以很多人批评比特币浪费能源,并没有真正创造价值。 当然,本文无意讨论这些争议。 我们的重点是如何使用 Stata 生成一个简单的比特币钱包。 下面是需要区分的三个术语的定义:私钥、公钥和地址。 私钥是证明我们拥有比特币的唯一凭证,通过私钥可以唯一生成公钥,但是公钥不能生成私钥。 经过一定程度的加密后,公钥就可以成为一个地址。 我们可以认为地址和公钥是等价的。
对于一个简单的钱包来说,地址就是盒子,私钥就是盒子的唯一钥匙。 比特币系统的私钥是一个 256 位的二进制数。 这个数字通常需要随机生成。 今天我们使用沪深300指数2017-2018年的收盘价来生成随机数。 如果小于5,我们记录为0,否则为1。这样我们就可以得到比特币的私钥,对私钥进行一定的数学运算,得到WIF格式的私钥。 在此基础上,我们还可以推断出这个私钥对应的地址。
有了私钥和地址好用的比特币钱包,我们就有了一个简单的比特币钱包。 你可以让别人转钱到这个地址,因为你有私钥,你就拥有这个账户里比特币的唯一所有权。 我们同时在Stata程序中调用Python。 这篇文章也是Stata扩展应用边界的一个小案例。
以下过程是:
cntrade 000300,index
gen year=year(date)
keep if year==2018|year==2017
egen t=rank(date)
gen price=string(clsprc)
gen num=real(substr(price,4,1))
gen digit=1
replace digit=0 if num<5
keep if t<=256
keep digit
tostring _all,replace
sxpose,clear
gen vara=""
forvalue i=1/256{
replace vara=vara+_var`i'
}
keep vara
local key=vara[1]
python:
from sfi import *
from __future__ import print_function
import bitcoin
a=Macro.getLocal('key')
decoded_private_key=int(a,2)
private_key=bitcoin.encode_privkey(decoded_private_key, 'hex')
# Convert private key to WIF format
wif_encoded_private_key = bitcoin.encode_privkey(decoded_private_key, 'wif')
print("Private Key (WIF) is: ", wif_encoded_private_key)
# Add suffix "01" to indicate a compressed private key
compressed_private_key = private_key + '01'
print("Private Key Compressed (hex) is: ", compressed_private_key)
# Generate a WIF format from the compressed private key (WIF-compressed)
wif_compressed_private_key = bitcoin.encode_privkey(
bitcoin.decode_privkey(compressed_private_key, 'hex'), 'wif_compressed')
print("Private Key (WIF-Compressed) is: ", wif_compressed_private_key)
public_key = bitcoin.fast_multiply(bitcoin.G, decoded_private_key)
# Encode as hex, prefix 04
hex_encoded_public_key = bitcoin.encode_pubkey(public_key, 'hex')
print("Public Key (hex) is:", hex_encoded_public_key)
# Compress public key, adjust prefix depending on whether y is even or odd
(public_key_x, public_key_y) = public_key
compressed_prefix = '02' if (public_key_y % 2) == 0 else '03'
hex_compressed_public_key = compressed_prefix + (bitcoin.encode(public_key_x, 16).zfill(64))
print("Compressed Public Key (hex) is:", hex_compressed_public_key)
# Generate bitcoin address from public key
print("Bitcoin Address (b58check) is:", bitcoin.pubkey_to_address(public_key))
# Generate compressed bitcoin address from compressed public key
print("Compressed Bitcoin Address (b58check) is:",
bitcoin.pubkey_to_address(hex_compressed_public_key))
end
我们生成的地址是:
1MTF7aS2gDfWM8ZGSC6DcEETy7T6pjJPT4
通过区块浏览器,我们发现该地址上的余额为0,没有发生任何交易。
--
我们受大家欢迎的文章还包括: