owgmdz

首先声明我是一个小白,刚刚学习区块链不就,下面的内容大多不是原创,是在总结了很多人的博客之后的经验而已,我会贴上知识源的博客。

这是我的一次作业,也就是在区块链上刻上字。实际上就是构造一个op_retun交易,然后而要写的东西的哈希放进去。

下面我将一点点说明我的失败之路,不过最终成功了。

首先要说明的是,现在很多网站像这种刻字服务都成为封装好的服务了,有些收钱,有些免费

比如:

https://originstamp.org  这个网站它是免费的,可以证明文件的存在性和发布时间

http://www.ibitlin.com/ 这个网站有很多小工具,包括生成密钥,广播交易等,也有直接的刻字服务,不过可能有些小错误,我提交了一个测试网的刻字服务,刻完后去查询,发现那个查询的网站挂了,然后跳转到另一个网站后啥也没有了,也就是说,刻完字后根本找不到那个交易,哭泣。。。

然后,我第一次尝试的是搭建bitcoin core的节点,在我电脑的centos7系统下,这是因为我开始学习的时候看的是《精通比特币》那本书,里面建议的就是自己搭节点,然后用它的命令行完成一些操作,基本上就是利用json的一些接口来生成交易呀、查询交易呀之类的。有个致命问题,那就是你必须要等待他自动同步完所有的区块,好几个G,如果你每隔一分钟用 getblockchaininfo(具体不记得了)去查他已经下载下来的区块高度,就会发现一直在增长,但是很慢,我的好像是19万的高度,但是同步完好像是40多万,要好几天,所以,我放弃了。如果你现在生成了一个交易,包含它的区块被发布了,那一定是最高的区块,那么你还没同步完,肯定就查不到。

之后我用试了以太坊,也失败了,过程略过。。。(新手太菜)

放弃了这些方法后,我看到了这么一篇博客https://blog.csdn.net/u010662978/article/details/79195284,我下面的任务基本就是按照它来完成的。

第一步是安装go语言,然后是安装git,然后就是安装btcd。btcd实在是太难装了,我装了好久都失败了,网上有很多指导,很多都不全。

1.如果想完整安装就参考https://www.cnblogs.com/hupeng1234/p/9729180.html,我做到了第(2)步的最后一步,也就是go install . ./cmd/...出错,我发誓我所有的都做了哭泣。

这篇博客里有两个错误,首先是在glide install之前要运行一次glide init,

其次是glide install的错:

(1)如果不FQ的话,那么就会要执行“go get golang.org/x 包失败解决方法”这一步,最后有这么几步:

这里只下载和安装sys和crypto是不够的,还有net也要下载和安装,不然会报错,这几个都是按顺序依赖的

(2如果可以FQ(我是有VPN的(shadowsocks)),但是还是在执行glide install时报错(迷惑),于是我命令行执行一下命令:

set http_proxy=127.0.0.1:1080

set https_proxy=127.0.0.1:1080

接着需要设置镜像

glide mirror set https://golang.org/x/crypto https://github.com/golang/crypto --vcs git
glide mirror set https://golang.org/x/net https://github.com/golang/net --vcs git
glide mirror set https://golang.org/x/sys https://github.com/golang/sys --vcs git
glide mirror set https://golang.org/x/text https://github.com/golang/text --vcs git
glide mirror set https://google.golang.org/grpc https://github.com/grpc/grpc-go --vcs git
glide mirror set https://google.golang.org/genproto https://github.com/google/go-genproto --vcs git
glide mirror set https://golang.org/x/mobile https://github.com/golang/mobile --vcs git
glide mirror set https://golang.org/x/tools https://github.com/golang/tools --vcs git
glide mirror set https://golang.org/x/image https://github.com/golang/image --vcs git

 然后就可以正常glide install了

2.我并没有完整安装btcd,因为各种错误,很烦躁。如果完整安装的话,就会在go的bin目录下生成一些工具,这些工具可以用来在命令行执行一些像sendrawtranction之类的对于区块链的直接操作。如果没有完整安装,就想我一样,那么就直接下载github的btcd包放在go目录下就行了,这样就能正确进行下面的代码编译。

go src下创建文件夹,文件夹里包含以下代码:

代码作者:ioael 
来源:CSDN 
原文:https://blog.csdn.net/u010662978/article/details/79195284 

package main

import (
"github.com/btcsuite/btcd/btcec"
"github.com/btcsuite/btcutil"
"github.com/btcsuite/btcd/chaincfg"
"fmt"
)

func GenerateBTC() (string, string, error) {
privKey, err := btcec.NewPrivateKey(btcec.S256())
if err != nil {
return "", "", err
}

privKeyWif, err := btcutil.NewWIF(privKey, &chaincfg.MainNetParams, false)
if err != nil {
return "", "", err
}
pubKeySerial := privKey.PubKey().SerializeUncompressed()

pubKeyAddress, err := btcutil.NewAddressPubKey(pubKeySerial, &chaincfg.MainNetParams)
if err != nil {
return "", "", err
}

return privKeyWif.String(), pubKeyAddress.EncodeAddress(), nil
}

func GenerateBTCTest() (string, string, error) {
privKey, err := btcec.NewPrivateKey(btcec.S256())
if err != nil {
return "", "", err
}

privKeyWif, err := btcutil.NewWIF(privKey, &chaincfg.TestNet3Params, false)
if err != nil {
return "", "", err
}
pubKeySerial := privKey.PubKey().SerializeUncompressed()

pubKeyAddress, err := btcutil.NewAddressPubKey(pubKeySerial, &chaincfg.TestNet3Params)
if err != nil {
return "", "", err
}

return privKeyWif.String(), pubKeyAddress.EncodeAddress(), nil
}

func main() {
wifKey, address, _ := GenerateBTCTest() // 测试地址
// wifKey, address, _ := GenerateBTC() // 正式地址
fmt.Println(address, wifKey)
}
然后正确生成地址A和私钥B,然后领钱、执行剩下的代码都不说了,都按那篇博客来就行了,最后生成的交易是一串16进制。

如果完整的安装了btcd,那当然用它的命令就可以广播这个交易,由于失败了,所以我就退而求其次,在https://live.blockcypher.com/btc-testnet/pushtx/上手动方式广播了交易

之前说的http://www.ibitlin.com/网站和其他一些网站,广播交易都显示各种错误。。。有些网站甚至没有testnet的广播功能,只有mainnet

然后广播完,等一会“6个确认”之后,交易被包含的区块被验证了,就可以去查了。

这里需要说的是,我在op_return里写的是一个学历证书的哈希,这个证书是带有签名的证书,也就是说,学历信息被先签名再哈希,再结合区块链的时间戳,不可否认、不可篡改、时间戳都有了。

本人小白,刚接触不久,需要交流可以加QQ:1657723943一起学习!

相关文章:

  • 2021-09-28
  • 2022-02-10
  • 2021-09-15
  • 2021-07-30
  • 2021-12-29
  • 2021-12-24
  • 2021-05-09
  • 2022-01-15
猜你喜欢
  • 2021-08-04
  • 2021-11-26
  • 2021-07-17
  • 2021-06-09
  • 2021-09-11
  • 2021-08-12
  • 2021-05-08
相关资源
相似解决方案