zoukankan      html  css  js  c++  java
  • 区块链基础

    1、搭建私链,能够挖矿。

    # cat /etc/bitcoin/bitcoin.conf
    rpcuser=bitcoinrpc
    rpcpassword=12345
    maxconnections=1
    regtest=1
    datadir=/data/bitcoin
    fallbackfee=0.000001
    # bitcoind -conf=/etc/bitcoin/bitcoin.conf

    2、掌握节点api。怎么查询最新高度,区块详情,交易详情。

    查询最新高度

    # bitcoin-cli -conf=/etc/bitcoin/bitcoin.conf -rpcwallet=test1 getdifficulty   挖坑难度
    # bitcoin-cli -conf=/etc/bitcoin/bitcoin.conf -rpcwallet=test1  getblockcount  查询最新高度

    查询区块详情

    # bitcoin-cli -conf=/etc/bitcoin/bitcoin.conf -rpcwallet=test1 getnewaddress test2
    bcrt1q7hpsknkqyh4m8jqcl2t52x5wn8klhm03f6nnht
    root@vultr:~#
    root@vultr:~# bitcoin-cli -conf=/etc/bitcoin/bitcoin.conf -rpcwallet=test1 generatetoaddress 11 "bcrt1q7hpsknkqyh4m8jqcl2t52x5wn8klhm03f6nnht"
    [
      "17324140909ec40a44313e5a6ee41b0f6131016528ea1ff2d20ecb905e8b9c52",
      "755e0e405404b279492df7fb092ced8ba5e86b26dd29e1e3ad4a11262b305baf",
      "04ba1b23aff993daefd488a9166ce3e018dfc4ccc776038c8b9454561310f51b",
      "2ee0208500d4728af8ca6fcc4661fc765756d6712764fe4bd35023d877171305",
      "2d91a89bf9af919fac403dbd932ac61304fcfa05c4c0b5736a189e83a3e962cb",
      "5c1e0682d0db47a248d08db7b6e6d24484521bfddeb775c0c2c1195f62b1c749",
      "6589049ca69ed37575fdf8ad29dac6d57694acc78d7cb81b2d9e44ebf5c05bb7",
      "083f1bf74b23de3b1440bd1f1b4c9fbf68d229f71d5043a6476938ee3be3bd3a",
      "42f01de172eeacbdea8d74a0ae3fe56764e2ea7b42b3e72d879211478fdb0676",
      "4abc4eadc98d0b0d6bcbe67249ac3bc5c70744d3160c554fe28e71856efe5824",
      "3d5214aa36c0093e7de1b0aa7dc09ef4187b8adf3c59e3ffd3dac8a770232a61"
    ]
    # bitcoin-cli -conf=/etc/bitcoin/bitcoin.conf -rpcwallet=test1 getblock 17324140909ec40a44313e5a6ee41b0f6131016528ea1ff2d20ecb905e8b9c52

    转账

    bitcoin-cli -conf=/etc/bitcoin/bitcoin.conf  -rpcwallet=test2 sendtoaddress bcrt1q8lpak6qy7utddhhkg429e5ssvd6ce0406jfq06 10.0
    bitcoin-cli -conf=/etc/bitcoin/bitcoin.conf  -rpcwallet=test2 getbalance 

    查询交易

    bitcoin-cli -conf=/etc/bitcoin/bitcoin.conf -rpcwallet=test1  getrawtransaction "78111018919acfc817f6c32b7f47d316254b2e0b063fbd013cf252a11b990629"
    bitcoin-cli -conf=/etc/bitcoin/bitcoin.conf -rpcwallet=test1  decoderawtransaction "0200000000010129c8422ea7b73248ea874776e3123ad16a975367214555754f1ce9cd152f7be10000000000feffffff0273276bee00000000160014d7287b7ae63090f85a1dc6c38eeb790459742f8b00ca9a3b00000000160014d0d7b628576e034e5e63824a5c110af94a97a39e02473044022075071a978865a15ef5ee005a369fa077541a3285dadd7f9961bb56364efdc48c0220656b2cd3513d54d189ffc74287643b0f4e10a54ce0463ff36c1e5c6cc471591d0121024aff2008f342230b7c63f119ec80e3c08408656d4e09c447f3a2285e7fa942440d000000"
    {
      "txid": "78111018919acfc817f6c32b7f47d316254b2e0b063fbd013cf252a11b990629",  交易id
      "hash": "3bd203bd0fc8cf020ad7f8c2ff57462053220b73169d9f3b67c080f40896c3ad",  交易哈希
      "version": 2,  交易版本
      "size": 222,   交易大小
      "vsize": 141,  虚拟交易大小
      "weight": 561, 交易权重      
      "locktime": 13,  锁定时间
      "vin": [
        {
          "txid": "e17b2f15cde91c4f755545216753976ad13a12e3764787ea4832b7a72e42c829",  交易索引
          "vout": 0, 输出序号
          "scriptSig": { 脚本
            "asm": "", 脚本公钥
            "hex": ""  
          },
          "txinwitness": [
            "3044022075071a978865a15ef5ee005a369fa077541a3285dadd7f9961bb56364efdc48c0220656b2cd3513d54d189ffc74287643b0f4e10a54ce0463ff36c1e5c6cc471591d01",  16进制编码见证数据
            "024aff2008f342230b7c63f119ec80e3c08408656d4e09c447f3a2285e7fa94244"
          ],
          "sequence": 4294967294  脚本序列号
        }
      ],
      "vout": [
        {
          "value": 39.99999859,   TBC数量
          "n": 0,   索引
          "scriptPubKey": {
            "asm": "0 d7287b7ae63090f85a1dc6c38eeb790459742f8b",
            "hex": "0014d7287b7ae63090f85a1dc6c38eeb790459742f8b",
            "reqSigs": 1, 
            "type": "witness_v0_keyhash", 类型
            "addresses": [
              "bcrt1q6u58k7hxxzg0sksacmpca6meq3vhgtutxa9n2q"  比特币地址
            ]
          }
        },
        {
          "value": 10.00000000,
          "n": 1,
          "scriptPubKey": {
            "asm": "0 d0d7b628576e034e5e63824a5c110af94a97a39e",
            "hex": "0014d0d7b628576e034e5e63824a5c110af94a97a39e",
            "reqSigs": 1,
            "type": "witness_v0_keyhash",
            "addresses": [
              "bcrt1q6rtmv2zhdcp5uhnrsf99cyg2l99f0gu72e9eu2"
            ]
          }
        }
      ]
    }

    载入钱包

    ~# bitcoin-cli -conf=/etc/bitcoin/bitcoin.conf  loadwallet test1
    ~# bitcoin-cli -conf=/etc/bitcoin/bitcoin.conf  -rpcwallet=test2 gettransaction 8fcc2aab2bc7a75a4d716b97658e152bf11061320615e68ac35eb13ab8cfad26

    获取钱包地址

    bitcoin-cli -conf=/etc/bitcoin/bitcoin.conf -rpcwallet="test2"  getaddressesbylabel test2

    获取未使用的转账

    未使用的转账,这个概念是UTXO模型造成的。

    bitcoin-cli -conf=/etc/bitcoin/bitcoin.conf -rpcwallet="test2"  listunspent 1 99999999 '''["bcrt1q9r5us2eg3mkxf5skmkp2sfxathhjemg73kseud"]'''

    生成地址

    bitcoin-cli -conf=/etc/bitcoin/bitcoin.conf -rpcwallet=test1 getnewaddress

    5、使用任何编程语言,完成生成地址、构造交易、离线签名、广播并上链。不准使用钱包功能。

    from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException
    import logging
    import json
    logging.basicConfig()
    # logging.getLogger("BitcoinRPC").setLevel(logging.DEBUG)
    # rpc_user and rpc_password are set in the bitcoin.conf file
    rpc_connection_wallet2 = AuthServiceProxy("http://%s:%s@127.0.0.1:18443/wallet/test2"%("bitcoinrpc", "12345"))
    # print(rpc_connection_wallet2.listunspent())
    #
    a = rpc_connection_wallet2.createrawtransaction(
        [{
            "txid":"a03deed9352436f7c2bd21322c5b868f0676b032545dcfd6ce91759459acdfff", #找出一笔收入
            "vout":0,
        }],
        [
            {
                "bcrt1qmzpnlfzuukcmqmav4jnp8z2dm0cv3n87v3j0eh":49.999 #地址和金额
            }
        ]
    )
    # # # 0200000001ffdfac59947591ced6cf5d5432b076068f865b2c3221bdc2f7362435d9ee3da00000000000ffffffff0100ca9a3b00000000160014d8833fa45ce5b1b06facaca613894ddbf0c8ccfe00000000
    # # print(a)
    # #
    # # # 公钥bcrt1q9r5us2eg3mkxf5skmkp2sfxathhjemg73kseud
    # # # 私钥cTxgv9551mPCPzfmFUbyDD3PkWHR3sZt7wAzSx6wC617y8BMFi5X
    b = rpc_connection_wallet2.signrawtransactionwithkey(
        a,
        ["cTxgv9551mPCPzfmFUbyDD3PkWHR3sZt7wAzSx6wC617y8BMFi5X"]
    )
    print(b)
    
    res = rpc_connection_wallet2.sendrawtransaction(
        b["hex"]
    )
    print(res)
  • 相关阅读:
    微信小程序 开发 微信开发者工具 快捷键
    .NET 4.0 任务(Task)
    MVC UpdateModel的未能更新XXXXX的类型模型
    ORACLE 定时执行存储过程
    DotNet 资源大全中文版(Awesome最新版)
    基于SignalR实现B/S系统对windows服务运行状态的监测
    Method not found: '!!0[] System.Array.Empty()'.
    MVC-RedirectToAction跳转到其他Area
    C# where用法
    C#委托的介绍(delegate、Action、Func、predicate)
  • 原文地址:https://www.cnblogs.com/redheat/p/13885796.html
Copyright © 2011-2022 走看看