Sign in

Today let’s introducing the delve usage during Gopher’s daily development. I will show you a sample to demonstrate how I persist BTC block data to DB.


Blockchain industry from backend technical point of view, scanner or crawler of the block is necessary — — Structuring to display things like blockchain explorer or analysis things like cryptocurrency fraud or any others Defi products.

Many blockchain developers are struggling to find an effective solution to monitor on-chain data.

Many firms of wallets/exchanges would host/develop an in-house program to track blockchain latest ledger definitely, nevertheless I wanna said there is not a completely…

China is experiencing COVID-19 from the beginning of the 2020 China New Year. After the festival many programmers are working from home without heading to their office as usual for working days for safety. But there is trouble with API integration when colleagues are working without an internal network, the front-end has no access for back-end API. In this post, I will tell you guys a solution using ngrok to expose your local http service to the outside world securely.

Quick introduction to download and setup ngrok >

Credential for ngrok

One more thing involved ngrok setup needs to clarify is that…

These days I have self hosted DepOps pipeline integrate with gogs, docker private registry and drone on my server, feeling good about it and I wrote done the setup steps and pitfalls developer should be aware of them when building the service.

The complete docker-compose.yml sample -> drone-gogs-registry-example

tree displays the directory structure of the current directory

ubuntu@VM-0-11-ubuntu:~/drone-gogs-docker$ tree -I 'drone|gogs|data\/registry'
├── data
│ └── registry
│ ├── auth
│ │ └── htpasswd
│ ├── certs
│ │ ├── domain.crt
│ │ └── domain.key
└── docker-compose.yaml

Docker Private Registry

Firstly, let’s setup docker image private registry. Expose sensitive internal service Docker images…

Bulk inserts is common requirement bases on relationship database. Someone would create records in a loop inside a transaction and finally commit to database, this would make sense if there is few records but when we need to create huge numbers of records, the solution isn’t a good sign.

When looping over a set of objecrs, a new sql operation is triggered each time. we should bulk insert batch records in one time to reduce db operate time. Just as preload related records between has_many relationship models to avoid n+1 queries.

In golang world, gorm is a nice orm framework…

As a cryptocurrency enthusiast and a part of blockchain industry builder, I will try my best to make the offort to build the cryptocurrency ecosystem better. In the post, I will share my experience on how to design a secure cryptocurrency wallet module for digital asset exchange. Wish it will help to build business bases on blockchain and crypto economy. If is there any other better solution, please don’t hesitate to give feedback.

Digital Asset management are crucial, especially for institutions those business build on blockchain. A typical usage case is crypto exchange or over the counter trade platform (OTC)…

As we all know, omnicore is a fork of the bitcoin-core codebase. Few part of USDT was issued as ERC20 token in Ethereum platform, due to historical reasons, The most popularest stable coin usdt was build on omnilayer — TetherUS. If you guy work on cryptocurrency wallet as your bussiness, supporting USDT wallet is necessary way to attract more users. This article introduce how to start a regtest mode private network between bitcoin-core and omnicore client.

Why we need do that

Most people would say, switching between Omni Core and Bitcoin Core may be supported, each one can maintain a bitcoin chaindata for development. Yep…

Dump Bitcoin Mainnet ledger to elasticsearch. constructed specify format so we can query balance and utxo, the main propose of the repo is for wallet or block explorer


Environment require:

  • Golang (compile)
  • Dep (package dependency)
  • Elasticsearch (database)

Before clone the repo, I wanna let claim that there is a bug I have verified the btcd, an alternative full node bitcoin implementation written in Go. See the detail: [RPC] getblock command has been changed, and I have given a solution how to fixed the problem

go get -u
cd $GOPATH/src/
dep ensure -v -update

After dep ensure -v -update to…

Generate Ethereum HD wallet & offline sign && broadcast signed tx to network. Solution for eth cold wallet.


Environment Require

  • Golang
  • Ethereum Private chain
  • dep
  • cgo or xgo (for go-ethereum dependency)
  • MySQL (construct tx)
go get -u
cd $GOPATH/src/
dep ensure -v -update

because of the codebase import go-ethereum, which is dependent on c, so cross compile need cgo. I hightly recommend a tool name xgo for Go CGO cross compiler, which is based on the concept of lightweight Linux containers.

go get

Next step is compile binary package for specify platform server, like this:

# for ubuner…

Source code is hosted in Github: wenweih/ethereum-cold-wallet

As cryptocurrency becomes more and more popular between people. Importantly, with hight profits return, someone has increased the proportion of digital asset in their asset allocation. For those with strong faith about that blockchain technology is the first time for the human to protect their private property cann’t be infringed and transfer the value without any restriction by third party, are attracted by Blockchain technology. At the same time, the safety of cryptocurrency is more importanter then ever before.

Ethereum become the world’s second most valuable cryptocurrency. for those who hold huge amounts…

As a backend programer, we often need to deploy our service to Linux server, create deploy user, setting ssh config to login our server by ssh rsa public key and install build essential environment is step one for server basic DepOps. So, I write down these simple steps for memo, wish it would help for you at the same time.

Create deploy user

I saw a guy operate production server by root user, which is bad behavior for a professional programer. In daily server DepOps, we should use non root user, So we named it deploy user.

adduser deploy
adduser deploy sudo
su - deploy

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store