Java BTC、Omni 同步充值交易

前言:

   需求:从公链拉取所有交易进行原始交易解析,匹配本地钱包地址根据交易确认数进行充值的确认。

   方案:

  •     初始化区块信息(高度、块hash等)持久化到数据库
  •     根据区块hash从主链获取交易txs
  •     解析txs对比充值钱包地址,存储充值信息、Unspent交易信息
  •     更新数据库里的区块信息
  •     进行线程的循环调用即可

1.初始化区块信息到数据库

@Order(value = 1)
@Service
public class BtcoinChargeServiceImpl implements  CommandLineRunner {
	
	private Logger LOG = LoggerFactory.getLogger("btcoin");
	
	private static final String RECHARSTATE = "0";
	private static final String CURRENTTYPE = "BTC";
 

   //初始化区块信息
	@Override
	public void run(String... arg0) throws Exception {
        //从数据读取信息进行判断
		CoinBlockInfo blockInfo = blockMapper.selectByCoinType("BTC");
		if (null == blockInfo || blockInfo.getBlockHeight() == 0) {
			int blockCount = (int) btcService.getBlockCount();
			String blockHash = btcService.getBlockHash(blockCount).toString();
			LOG.info("=== [BTC] init block height is : {} and block hash is :{} start !! ===", blockCount, blockHash);
			CoinBlockInfo blockInfos = new CoinBlockInfo();
			blockInfos.setBlockHeight(blockCount); //高度
			blockInfos.setBlockHash(blockHash);//块Hash
			blockInfos.setCoinType(CURRENTTYPE);
			blockInfos.setCreateTime(new Date());
			blockInfos.setRemark("first record");
			boolean res = blockMapper.insert(blockInfos) > 0 ? true : false;
			if (res)
				LOG.info("=== [BTC] init block success !!");
		}
	}
 
}

  2.  区块hash从主链获取交易txs并进行解析

//比特币充值交易信息

@Service
public class BtcoinChargeServiceImpl implements BtcoinChargeService{
	
	privat
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值