我正在对区块链进行一点实验,特别是尝试使用python-OP\u返回模块将几个字节放入区块链OP\u返回字段。为了使用这个模块iblv,我需要一个正在运行的bitcoin核心实例,所以我使用下载的.tar.gz安装了bitcoind(而不是通过ppa安装,ppa引发了一些系统问题iirc)。无论如何,我已经运行了bitcoind守护进程,通过编写bitcoin.conf文件,似乎可以避免使用prune参数将200+GB用于此。我还在bitcoin.conf中设置了以下内容:
rpcuser=我的用户
rpcpassword=我的密码
测试网=0
RPC端口=8332
rpcallowip=127.0.0.1英寸
rpcallowip=1.2.3.4
服务器=1
现在想尝试将一些字节放入区块链:
jeremy@instance-1:~$python3 python-OP\u RETURN/store-OP\u RETURN.py’此示例在区块链中存储47个字节。’
testnet False[**这是我打印的调试信息]
网址http://127.0.0.1:8332/req{‘id’:’1620597001.3218298-441058’,’method’:’getinfo’,’params’:()}[**这也是我打印的调试信息]
回溯(最近一次呼叫):
文件“python-OP\u RETURN/store-OP\u RETURN.py”,第47行,在<module>
结果=操作返回存储(数据,testnet)
文件“/home/jeremy/python-OP\u RETURN/OP\u RETURN.py”,第116行,在OP\u RETURN\u存储中
如果不是,返回比特币支票(testnet):
文件“/home/jeremy/python-OP\u RETURN/OP\u RETURN.py”,第410行,在OP\u RETURN\u比特币检查中
info=OP\u RETURN\u比特币\u cmd(’getinfo’,testnet)
文件“/home/jeremy/python-OP\u RETURN/OP\u RETURN.py”,第477行,在OP\u RETURN\u bitcoin\u cmd中
raw\u result=urlopen(url,json.dumps(request).encode(’utf-8’),OP\u RETURN\u NET\u TIMEOUT).read()
文件“/usr/lib/python3.7/urllib/request.py”,第222行,在urlopen中
return opener.open(url、数据、超时)
文件“/usr/lib/python3.7/urllib/request.py”,第531行,打开
响应=方法(请求,响应)
文件“/usr/lib/python3.7/urllib/request.py”,第641行,在http\u响应中
“http”、请求、响应、代码、消息、hdrs)
文件“/usr/lib/python3.7/urllib/request.py”,第563行出错
结果=自身调用链(*args)
文件“/usr/lib/python3.7/urllib/request.py”,第503行,在调用链中
结果=func(*args)
文件“/usr/lib/python3.7/urllib/request.py”,第1034行,在http\u error\u 401中
url、请求、标题)
文件“/usr/lib/python3.7/urllib/request.py”,第987行,http\u error\u auth\u requed
返回self.retry\u http\u basic\u auth(host,req,realm)
文件“/usr/lib/python3.7/urllib/request.py”,第997行,在retry\u http\u basic\u auth中
返回self.parent.open(req,timeout=req.timeout)
文件“/usr/lib/python3.7/urllib/request.py”,第531行,打开
响应=方法(请求,响应)
文件“/usr/lib/python3.7/urllib/request.py”,第641行,在http\u响应中
“http”、请求、响应、代码、消息、hdrs)
文件“/usr/lib/python3.7/urllib/request.py”,第569行出错
返回self.\u call\u chain(*args)
文件“/usr/lib/python3.7/urllib/request.py”,第503行,在调用链中
结果=func(*args)
文件“/usr/lib/python3.7/urllib/request.py”,第649行,http\u error\u default
raise HTTPError(请求完整的\u url、code、msg、hdrs、fp)
urllib.error.HTTPError:HTTP错误404:未找到
所以我的问题是如何避免404,和/或它为什么会发生。第477行的url和请求是
http://127.0.0.1:8332/和{id’:’1620597001.3218298-441058’,’method’:’getinfo’,’params’:()}。我应该用telnet来检查host:port is 回应?
比特币核心
比特币
操作返回
即使我在使用python-OP\u RETURN时也会遇到奇怪的错误,这个存储库中的最后一次提交是在2017年,所以我们可能需要对代码进行一些更改。
如果你想用opu RETURN做实验,可以使用比特币核心。例子:
将字符串转换为十六进制:https://codebeautify.org/string-hex-converter
createrawtransaction“[]”“{”data“:”616c69616268617474“}”
资金提取交易02000000000000000000000B6A09616C69616268617474000000000
用钱包签名交易0200000000CE2788D5FEC762BC775E599BD8D39A985DBD456F3FB950702204420DDC6B5AD020000000FEFFFFFFE2788D5FEC762BC775E599BD8D39A985DBD456F3FB950702204420DDC6B5C202000000 FEFFFFFFE2788D5FEC762BC775E599BD8D39A985DBD456F3FB950702204420DDC6B5C5020000000FEFFFFFFFFE2788D5FEC762BC775E599BD8D39A985DBD456F3FB950702204420DDC6B5AB020000000FEFFFFFFE2788D5FEC762BC775E599BD8D39A985DBD456F3FB950702204420DDC6B5FC020000000FEFFFFFFE2788D5FEC762BC775E599BD8D39A985DBD456F3FB950702204420DDC6B5B902000000 FEFFFFFFE2788D5FEC762BC775E599BD8D39A985DBD456F3FB950702204420DDC6B5CE020000000FEFFFFFFFFE2788D5FEC762BC775E599BD8D39A985DBD456F3FB950702204420DDC6B5D92000000FEFFFFFFE2788D5FEC762BC775E599AD985DBD456F3FB950702204420DDC6B5F0020000000FFFFFFE2788D8D5FEC762BC775E599BD8D39A985DBD456F3FB950702204420DDC6B5DB020000000FFFFFFE2788D5FEC762BC775E599BD8D39A985DBD456F3FB950702204420DDC6B58E0000000FFFFFFFFE2788D5FEC762BC775E599BD8D39A985DBD456F3FB950702204420DDC6B5020000FFFF02400F0000000000160145449E855D30333134C394B33626CD186437EE900000000000000000B6A09616C69616268617474000000000元
发送事务0002F0120565AEC22CC4F52B9BAAEA17F8D155B780FF1057C151F53CF15281A0FD5CD4E9502473044022028DD4A470864194AF0D40B3C3C6207E1941A370E004EDCC5E3CE1BA5746EAE4E02200A0F5A30C6710B00CB1E5D9E210FB5095D03A55FFF6512A1620BF7210437D96012102CF7C83739EF76EE1E9378B9E4F974B0761EF87A636001EE492E3D6330247304400D180174A0CD452153C7724F8BCFBD899D9343A60DBF802201BB8BA343EBE92480A26A6A6BE26C045BA790291A4DE42E83A8A519B640A39EDC012103BBFF0E340EE040337DED4F12B9AB6D15380D3521BFCD81BB7B65C1F672A6B140247304402205E0A52240C551350B21F476FF04B773D628E794502B86E1AB7E20F2CFAE02200732B220462D4B1A98A8CD9B4FE6A994E18747D16B9C08F86E1DCD2501210DE33188D561124FBC4659ABD293A26DFE4DA4046E95C73d4dccbc5676134a5ca02473044022068ebe1f6293f05c200949a9e10244b63dcce392fc9349daebd3714f371d018cf0220055ec9c8cc47a8386d280d153bbe39c47761ba731ef79622943195f3d14ba8da7012102972a77477874901de66d4dcf41a93d8b59766391eedf056ffaaf201574602473044022009f4ca1de2d0416e2df1d4002dabfea4a4788402038523b3d98d6de3c3f7fabeb81d15046eA3C13E6F75EF510B6EEC397A83F70102AB6642990C6E1810FAE0844DFAA8A7D2AA7DDA248A3B6F202E2211C092E60E58000000
操作返回示例tx
op退货明细
德克萨斯州:d3ba03164365d8a644dfc0fa221d367ff083463d67bfc5fcbbdc2643c3623bc5
使用AuthServiceProxy Python JSON-RPC接口实现相同功能的Python代码:
从bitcoinrpc.authproxy导入AuthServiceProxy
rpc\u端口=18444
rpc\u user=’用户3′
rpc\u password=’密码3′
rpc\u connection=AuthServiceProxy(“http://%s:%s@127.0.0.1用法:%s“%(rpc\u用户、rpc\u密码、rpc\u端口))
OP\u RETURN\u HEX=“aliabhatt”.encode(“utf-8”).HEX()
打印(OP\u RETURN\u HEX)
create\u tx=rpc\u connection.createrawtransaction([],{“data”:OP\u RETURN\u HEX})
打印(创建发送)
fund_tx=rpc_connection.fundrawtransation(创建\u tx)
打印(基金发送)
sign_tx=rpc_connection.fundrawtransation(fund_tx[‘hex’])
打印(签名)
send_tx=rpc_connection.fundrawtransation(sign_tx[‘hex’])
打印(发送)
分享
改进这个答案
跟随
两小时前编辑的
22小时前回答的
普拉扬克
355311金徽章66银徽章1818铜徽章
好的,谢谢-这似乎是旧的软件不再同步比特币核心,我看看我是否可以修补它-杰里米鲁特曼21小时前
如果您想使用python创建OP\u RETURN事务,我可以用不同的方法更新答案14小时前的普拉扬克
是的,这就是我想要的杰里米·鲁特曼7小时前
@jeremy\u rutman我在答案中添加了python代码–Prayank 2小时前
我安装了bitconirpc,最后得到了一个模块版本0.4.0,它似乎没有像您使用的那样的authproxy方法。我的bitconrpc有bitcoin\u rpc和BitcoinRPC对象,第一个对象有BestBlockHash这样的方法,第二个对象有getblock-jeremy\u rutman这样的方法
再显示3条评论
你的答案