使用RPC的接口转账

1. 前言

前面我们使用cleos完成过转账的功能,这篇文章我们尝试使用RPC API的方式进行转账。在测试网络/主网络转账EOS,在测试网络转账代币。

官方文档:https://github.com/EOSBlock/EOS-Tutorials/blob/master/EN/transfer-tokens-using-RPC.md

2. 大致流程

使用RPC API转账的流程如下:

  1. abi_json_to_bin 将转账信息由json格式序列化为bin格式字符串

  2. get_info 获取当前最新的区块编号

  3. get_block 根据区块编号获取区块详情

  4. get_required_keys(可省略) 传入当前拥有的公钥、bin字符串,区块等信息,筛选出签署交易需要的公钥

  5. sign_transaction 传入上面获取的相关参数,通过钱包中私钥对交易进行签署

  6. push_transaction 根据第五步获取的签名信息,将交易提交到区块链上

3. 详细流程

3.1 在测试网络转账EOS

3.1.1 查看余额

先查看两个交易账号的EOS余额:

api
http://jungle.cryptolions.io:18888/v1/chain/get_currency_balance

params
{"code":"eosio.token", "account":"testnetyy111", "symbol":"eos"}
{"code":"eosio.token", "account":"testneths111", "symbol":"eos"}

return

testnetyy111
[
    "9641.6587 EOS"
]
testneths111
[
    "0.0000 EOS"
]

3.1.2 将交易信息由JSON格式序列化为BIN格式字符串

testnetyy111100 EOS给testneths111

api
http://jungle.cryptolions.io:18888/v1/chain/abi_json_to_bin

params
{"code":"eosio.token","action":"transfer","args":{"from":"testnetyy111","to":"testneths111","quantity":"100.0000 EOS", "memo":"hi there"}}

return
{
    "binargs": "1042f03eab99b1ca1042c02dab99b1ca40420f000000000004454f5300000000086869207468657265"
}

获取到binargs

3.1.3 获取当前最新的区块编号

api
http://jungle.cryptolions.io:18888/v1/chain/get_info

params
无

return
{
    "server_version": "cc9decff",
    "chain_id": "038f4b0fc8ff18a4f0842a8f0564611f6e96e8535901dd45e43ac8691a1c4dca",
    "head_block_num": 13800828,
    "last_irreversible_block_num": 13800496,
    "last_irreversible_block_id": "00d29430d9809c633ddf3cc5c01613b58105394502e9846515c87274765c6d05",
    "head_block_id": "00d2957ccb42d63c2d643c0a1b0b98da69c462b94a62ed434a0e565035bab90b",
    "head_block_time": "2018-09-11T05:39:10.000",
    "head_block_producer": "lioninjungle",
    "virtual_block_cpu_limit": 200000000,
    "virtual_block_net_limit": 1048576000,
    "block_cpu_limit": 199900,
    "block_net_limit": 1048576,
    "server_version_string": "v1.2.4-dirty"
}

获取到head_block_num

3.1.4 根据区块编号获取区块详情

api
http://jungle.cryptolions.io:18888/v1/chain/get_block

params
{"block_num_or_id":"13800828"}

return
{
    "timestamp": "2018-09-11T05:39:10.000",
    "producer": "lioninjungle",
    "confirmed": 0,
    "previous": "00d2957b0e343f2ffa7640591ac1f27ed0ac89d2869e0a9c0576f065a31ee1cc",
    "transaction_mroot": "0000000000000000000000000000000000000000000000000000000000000000",
    "action_mroot": "22546c1e4c12d53a55c60d0ccb7196baa0afb05993612d2cf0591d7bf8fd8d34",
    "schedule_version": 219,
    "new_producers": null,
    "header_extensions": [],
    "producer_signature": "SIG_K1_KXFvmHtXMnDhp8V7CpHuGoYch3whWorL2Fr7nArevzTmC2tXsKRXHCkHiF9myRpbbx3cTShba64jWveKATr49k3Bonp7aw",
    "transactions": [],
    "block_extensions": [],
    "id": "00d2957ccb42d63c2d643c0a1b0b98da69c462b94a62ed434a0e565035bab90b",
    "block_num": 13800828,
    "ref_block_prefix": 171729965
}

获取到timestamp 和ref_block_prefix

3.1.5 筛选出签署交易需要的公钥

钱包中可能有很多公钥存在,调用此方法可以筛选出完成此次交易需要的公钥。如果已明确应该使用的公钥,那可以省略此方法。

首先调用API打开并解锁钱包,然后获取所有的公钥。这部分内容在EOS开发(八)RPC API都有使用介绍。

参数说明:

  • available_keys 钱包中的公钥

  • account 合约名称。这里是转账EOS,使用的是eosio.token

  • actor 调用者。这里相当于转账方

  • permission 使用的权限类型

  • data 之前生成的bin字符串

  • name 调用的合约方法。这里调用的是转账方法transfer

  • expiration 过期时间。这里将timestamp加上了20分钟。可以根据需要来增加时长

  • ref_block_num 前面获取的最新区块号

  • ref_block_prefix 前面获取的ref_block_prefix

api
http://jungle.cryptolions.io:18888/v1/chain/get_required_keys

params
{
    "available_keys": [
        "EOS6cnhSLTn4eSUEqS4nC8frYTsVsjeH2M3hos1TUeCgme2Yim5Q5",
        "EOS6Z7mUQeFC2cQTT3xMyZh2wsLQoHih1bTMgRhr3dbichprTi7Rc",
        "EOS7RkP6aevKjN1CiKSqo44Gi1HhPYBczGFgSduBXBD7uHUFhg2qC",
        "EOS7sGb8DfutGgpuMmnDhG1d2stVETfpkrHQ6HhVRJJaPXRqLay2E"
    ],
    "transaction": {
        "actions": [
            {
                "account": "eosio.token",
                "authorization": [
                    {
                        "actor": "testnetyy111",
                        "permission": "active"
                    }
                ],
                "data": "1042f03eab99b1ca1042c02dab99b1ca40420f000000000004454f5300000000086869207468657265",
                "name": "transfer"
            }
        ],
        "context_free_actions": [
        ],
        "context_free_data": [
        ],
        "delay_sec": 0,
        "expiration": "2018-09-11T05:59:10.000",
        "max_kcpu_usage": 0,
        "max_net_usage_words": 0,
        "ref_block_num": 13800828,
        "ref_block_prefix": 171729965,
        "signatures": [
        ]
    }
}

return
{
    "required_keys": [
        "EOS6Z7mUQeFC2cQTT3xMyZh2wsLQoHih1bTMgRhr3dbichprTi7Rc"
    ]
}

获取到实际需要的公钥EOS6Z7mUQeFC2cQTT3xMyZh2wsLQoHih1bTMgRhr3dbichprTi7Rc

3.1.6 签署交易

参数说明:

  • ref_block_num 前面获取的最新区块号

  • ref_block_prefix 前面获取的ref_block_prefix

  • expiration 过期时间。这里将timestamp加上了20分钟。可以根据需要来增加时长

  • account 合约名称。这里是转账EOS,使用的是eosio.token

  • name 调用的合约方法。这里调用的是转账方法transfer

  • actor 调用者。这里相当于转账方

  • permission 使用的权限类型

  • data 之前生成的bin字符串

  • EOS6Z7mUQeFC2cQTT3xMyZh2wsLQoHih1bTMgRhr3dbichprTi7Rc 签署此交易的公钥。实际上是由钱包中对应的私钥来签

  • 038f4b0fc8ff18a4f0842a8f0564611f6e96e8535901dd45e43ac8691a1c4dca 链id。注明当前处于主网/测试网/私有网络。这里显示的为测试网络

api
http://127.0.0.1:8888/v1/wallet/sign_transaction

params
[{
        "ref_block_num": 13800828,
        "ref_block_prefix": 171729965,
        "expiration": "2018-09-11T05:59:10.000",
        "actions": [{
            "account": "eosio.token",
            "name": "transfer",
            "authorization": [{
                "actor": "testnetyy111",
                "permission": "active"
            }],
            "data": "1042f03eab99b1ca1042c02dab99b1ca40420f000000000004454f5300000000086869207468657265"
        }],
        "signatures": []
    },
    ["EOS6Z7mUQeFC2cQTT3xMyZh2wsLQoHih1bTMgRhr3dbichprTi7Rc"], "038f4b0fc8ff18a4f0842a8f0564611f6e96e8535901dd45e43ac8691a1c4dca"
]

return
{
    "expiration": "2018-09-11T05:59:10",
    "ref_block_num": 38268,
    "ref_block_prefix": 171729965,
    "max_net_usage_words": 0,
    "max_cpu_usage_ms": 0,
    "delay_sec": 0,
    "context_free_actions": [],
    "actions": [
        {
            "account": "eosio.token",
            "name": "transfer",
            "authorization": [
                {
                    "actor": "testnetyy111",
                    "permission": "active"
                }
            ],
            "data": "1042f03eab99b1ca1042c02dab99b1ca40420f000000000004454f5300000000086869207468657265"
        }
    ],
    "transaction_extensions": [],
    "signatures": [
        "SIG_K1_K9eDsXiqEMkJs8wPwEjiN6hL1h2Bm3gGQtUheidFczWNdBmDF24AUuPmiosi9CwtEW3jPFPao7HYWLJ63ic3TggjnoKtJF"
    ],
    "context_free_data": []
}

获取到signatures

3.1.7 提交交易

参数说明:

  • expiration 过期时间。这里将timestamp加上了20分钟。可以根据需要来增加时长

  • ref_block_num 前面获取的最新区块号

  • ref_block_prefix 前面获取的ref_block_prefix

  • account 合约名称。这里是转账EOS,使用的是eosio.token

  • name 调用的合约方法。这里调用的是转账方法transfer

  • actor 调用者。这里相当于转账方

  • permission 使用的权限类型

  • data 之前生成的bin字符串

  • signatures 签署交易后生成的签名字符串

api
http://jungle.cryptolions.io:18888/v1/chain/push_transaction

params
{
  "compression": "none",
  "transaction": {
    "expiration": "2018-09-11T05:59:10.000",
    "ref_block_num": 13800828,
    "ref_block_prefix": 171729965,
    "context_free_actions": [],
    "actions": [
        {
            "account": "eosio.token",
            "name": "transfer",
            "authorization": [
                {
                    "actor": "testnetyy111",
                    "permission": "active"
                }
            ],
            "data": "1042f03eab99b1ca1042c02dab99b1ca40420f000000000004454f5300000000086869207468657265"
        }
    ],
    "transaction_extensions": []
  },
  "signatures": [
        "SIG_K1_K9eDsXiqEMkJs8wPwEjiN6hL1h2Bm3gGQtUheidFczWNdBmDF24AUuPmiosi9CwtEW3jPFPao7HYWLJ63ic3TggjnoKtJF"
   ]
}

return
{
    "transaction_id": "4efb2687ef59c9a677da68264eb409d71aca66d7e3df4b35ee34f59e13783ffc",
    "processed": {
        "id": "4efb2687ef59c9a677da68264eb409d71aca66d7e3df4b35ee34f59e13783ffc",
        "receipt": {
            "status": "executed",
            "cpu_usage_us": 1537,
            "net_usage_words": 17
        },
        "elapsed": 1537,
        "net_usage": 136,
        "scheduled": false,
        "action_traces": [
            {
                "receipt": {
                    "receiver": "eosio.token",
                    "act_digest": "45d232c72b5ca003627bc411ff9881286fd411239ceac528b98e6fb33a50919e",
                    "global_sequence": 32142292,
                    "recv_sequence": 1716642,
                    "auth_sequence": [
                        [
                            "testnetyy111",
                            37
                        ]
                    ],
                    "code_sequence": 3,
                    "abi_sequence": 3
                },
                "act": {
                    "account": "eosio.token",
                    "name": "transfer",
                    "authorization": [
                        {
                            "actor": "testnetyy111",
                            "permission": "active"
                        }
                    ],
                    "data": {
                        "from": "testnetyy111",
                        "to": "testneths111",
                        "quantity": "100.0000 EOS",
                        "memo": "hi there"
                    },
                    "hex_data": "1042f03eab99b1ca1042c02dab99b1ca40420f000000000004454f5300000000086869207468657265"
                },
                "elapsed": 942,
                "cpu_usage": 0,
                "console": "",
                "total_cpu_usage": 0,
                "trx_id": "4efb2687ef59c9a677da68264eb409d71aca66d7e3df4b35ee34f59e13783ffc",
                "inline_traces": [
                    {
                        "receipt": {
                            "receiver": "testnetyy111",
                            "act_digest": "45d232c72b5ca003627bc411ff9881286fd411239ceac528b98e6fb33a50919e",
                            "global_sequence": 32142293,
                            "recv_sequence": 16,
                            "auth_sequence": [
                                [
                                    "testnetyy111",
                                    38
                                ]
                            ],
                            "code_sequence": 3,
                            "abi_sequence": 3
                        },
                        "act": {
                            "account": "eosio.token",
                            "name": "transfer",
                            "authorization": [
                                {
                                    "actor": "testnetyy111",
                                    "permission": "active"
                                }
                            ],
                            "data": {
                                "from": "testnetyy111",
                                "to": "testneths111",
                                "quantity": "100.0000 EOS",
                                "memo": "hi there"
                            },
                            "hex_data": "1042f03eab99b1ca1042c02dab99b1ca40420f000000000004454f5300000000086869207468657265"
                        },
                        "elapsed": 100,
                        "cpu_usage": 0,
                        "console": "",
                        "total_cpu_usage": 0,
                        "trx_id": "4efb2687ef59c9a677da68264eb409d71aca66d7e3df4b35ee34f59e13783ffc",
                        "inline_traces": []
                    },
                    {
                        "receipt": {
                            "receiver": "testneths111",
                            "act_digest": "45d232c72b5ca003627bc411ff9881286fd411239ceac528b98e6fb33a50919e",
                            "global_sequence": 32142294,
                            "recv_sequence": 7,
                            "auth_sequence": [
                                [
                                    "testnetyy111",
                                    39
                                ]
                            ],
                            "code_sequence": 3,
                            "abi_sequence": 3
                        },
                        "act": {
                            "account": "eosio.token",
                            "name": "transfer",
                            "authorization": [
                                {
                                    "actor": "testnetyy111",
                                    "permission": "active"
                                }
                            ],
                            "data": {
                                "from": "testnetyy111",
                                "to": "testneths111",
                                "quantity": "100.0000 EOS",
                                "memo": "hi there"
                            },
                            "hex_data": "1042f03eab99b1ca1042c02dab99b1ca40420f000000000004454f5300000000086869207468657265"
                        },
                        "elapsed": 23,
                        "cpu_usage": 0,
                        "console": "",
                        "total_cpu_usage": 0,
                        "trx_id": "4efb2687ef59c9a677da68264eb409d71aca66d7e3df4b35ee34f59e13783ffc",
                        "inline_traces": []
                    }
                ]
            }
        ],
        "except": null
    }
}

3.1.8 查询转账完成后的余额

testnetyy111  "9541.6587 EOS"
testneths111  "100.0000 EOS"

3.2 在测试网络转账代币

3.2.1 先查询余额

api
http://jungle.cryptolions.io:18888/v1/chain/get_currency_balance

params
{"code":"testnetyy111", "account":"testnetyy111", "symbol":"ray"}
{"code":"testnetyy111", "account":"testneths111", "symbol":"ray"}

return

testnetyy111
[
    "99999800.0000 RAY"
]
testneths111
[
    "200.0000 RAY"
]

3.2.2 将交易信息由JSON格式序列化为BIN格式字符串

testnetyy111100 RAY给testneths111

api
http://jungle.cryptolions.io:18888/v1/chain/abi_json_to_bin

params
{"code":"testnetyy111","action":"transfer","args":{"from":"testnetyy111","to":"testneths111","quantity":"100.0000 RAY", "memo":"hello there"}}

return
{
    "binargs": "1042f03eab99b1ca1042c02dab99b1ca40420f000000000004524159000000000b68656c6c6f207468657265"
}

3.2.3 获取当前最新的区块编号

api
http://jungle.cryptolions.io:18888/v1/chain/get_info

params
无

return
{
    "server_version": "cc9decff",
    "chain_id": "038f4b0fc8ff18a4f0842a8f0564611f6e96e8535901dd45e43ac8691a1c4dca",
    "head_block_num": 13807658,
    "last_irreversible_block_num": 13807329,
    "last_irreversible_block_id": "00d2aee1e209a3a21f0c1bf3a9b3b79322c27cb48353d9e28f17286b0daaa58b",
    "head_block_id": "00d2b02afdedb3e0f487026946a7a56be8f331aecebb8b04faff03cf566a0fb6",
    "head_block_time": "2018-09-11T06:36:50.000",
    "head_block_producer": "astraealions",
    "virtual_block_cpu_limit": 200000000,
    "virtual_block_net_limit": 1048576000,
    "block_cpu_limit": 199900,
    "block_net_limit": 1048576,
    "server_version_string": "v1.2.4-dirty"
}

3.2.4 根据区块编号获取区块详情

api
http://jungle.cryptolions.io:18888/v1/chain/get_block

params
{"block_num_or_id":"13807658"}

return
{
    "timestamp": "2018-09-11T06:36:50.000",
    "producer": "astraealions",
    "confirmed": 0,
    "previous": "00d2b029ac9a6eb269c6ea4f8bb3f2961d948f1f0ca3cd0cc4640ceadc95d37b",
    "transaction_mroot": "0000000000000000000000000000000000000000000000000000000000000000",
    "action_mroot": "0b1b4f510e0cdd272052fe0f3f9b1e74c7c6f83253409d943c3394eefbb7762e",
    "schedule_version": 219,
    "new_producers": null,
    "header_extensions": [],
    "producer_signature": "SIG_K1_KZZ4giS7WxbSt3i6rcdZqgBWGzpE9XXq8A88kkSDDt9s8MbB2Vs1VEdMDoGYAeqTVUqX25xszU2cBwfHkbEvooPnZSm5FR",
    "transactions": [],
    "block_extensions": [],
    "id": "00d2b02afdedb3e0f487026946a7a56be8f331aecebb8b04faff03cf566a0fb6",
    "block_num": 13807658,
    "ref_block_prefix": 1761773556
}

3.2.5 筛选出签署交易需要的公钥

这里省略这一步了,因为我们明确知道需要的公钥为EOS6Z7mUQeFC2cQTT3xMyZh2wsLQoHih1bTMgRhr3dbichprTi7Rc

3.2.6 签署交易

这里的参数account变为testnetyy111,因为其是代币合约

api
http://127.0.0.1:8888/v1/wallet/sign_transaction

params
[{
        "ref_block_num": 13807658,
        "ref_block_prefix": 1761773556,
        "expiration": "2018-09-11T06:56:50.000",
        "actions": [{
            "account": "testnetyy111",
            "name": "transfer",
            "authorization": [{
                "actor": "testnetyy111",
                "permission": "active"
            }],
            "data": "1042f03eab99b1ca1042c02dab99b1ca40420f000000000004524159000000000b68656c6c6f207468657265"
        }],
        "signatures": []
    },
    ["EOS6Z7mUQeFC2cQTT3xMyZh2wsLQoHih1bTMgRhr3dbichprTi7Rc"], "038f4b0fc8ff18a4f0842a8f0564611f6e96e8535901dd45e43ac8691a1c4dca"
]

return
{
    "expiration": "2018-09-11T06:56:50",
    "ref_block_num": 45098,
    "ref_block_prefix": 1761773556,
    "max_net_usage_words": 0,
    "max_cpu_usage_ms": 0,
    "delay_sec": 0,
    "context_free_actions": [],
    "actions": [
        {
            "account": "testnetyy111",
            "name": "transfer",
            "authorization": [
                {
                    "actor": "testnetyy111",
                    "permission": "active"
                }
            ],
            "data": "1042f03eab99b1ca1042c02dab99b1ca40420f000000000004524159000000000b68656c6c6f207468657265"
        }
    ],
    "transaction_extensions": [],
    "signatures": [
        "SIG_K1_KXFAydwhD6u74pxQcTakiGCjtSuUw9PBsFb7ETxh1ULqjFkXqfyaoL34TkEmZi7iBTgUQZqUJRcVYYkrLWZxbVybRUArNX"
    ],
    "context_free_data": []
}

3.2.7 提交交易

api
http://jungle.cryptolions.io:18888/v1/chain/push_transaction

params
{
  "compression": "none",
  "transaction": {
    "expiration": "2018-09-11T06:56:50.000",
    "ref_block_num": 13807658,
    "ref_block_prefix": 1761773556,
    "context_free_actions": [],
    "actions": [
        {
            "account": "testnetyy111",
            "name": "transfer",
            "authorization": [
                {
                    "actor": "testnetyy111",
                    "permission": "active"
                }
            ],
            "data": "1042f03eab99b1ca1042c02dab99b1ca40420f000000000004524159000000000b68656c6c6f207468657265"
        }
    ],
    "transaction_extensions": []
  },
  "signatures": [
        "SIG_K1_KXFAydwhD6u74pxQcTakiGCjtSuUw9PBsFb7ETxh1ULqjFkXqfyaoL34TkEmZi7iBTgUQZqUJRcVYYkrLWZxbVybRUArNX"
   ]
}

return
{
    "transaction_id": "27c120548fee4e0ca31bc779ba85eb61ea4a2c5204043b696800d6cdb11da48b",
    "processed": {
        "id": "27c120548fee4e0ca31bc779ba85eb61ea4a2c5204043b696800d6cdb11da48b",
        "receipt": {
            "status": "executed",
            "cpu_usage_us": 1176,
            "net_usage_words": 17
        },
        "elapsed": 1176,
        "net_usage": 136,
        "scheduled": false,
        "action_traces": [
            {
                "receipt": {
                    "receiver": "testnetyy111",
                    "act_digest": "28d41460e20878bc412281b80c4d46ce174a4a48e8c7caf9ef28a13383e72d9e",
                    "global_sequence": 32149270,
                    "recv_sequence": 17,
                    "auth_sequence": [
                        [
                            "testnetyy111",
                            40
                        ]
                    ],
                    "code_sequence": 1,
                    "abi_sequence": 1
                },
                "act": {
                    "account": "testnetyy111",
                    "name": "transfer",
                    "authorization": [
                        {
                            "actor": "testnetyy111",
                            "permission": "active"
                        }
                    ],
                    "data": {
                        "from": "testnetyy111",
                        "to": "testneths111",
                        "quantity": "100.0000 RAY",
                        "memo": "hello there"
                    },
                    "hex_data": "1042f03eab99b1ca1042c02dab99b1ca40420f000000000004524159000000000b68656c6c6f207468657265"
                },
                "elapsed": 782,
                "cpu_usage": 0,
                "console": "",
                "total_cpu_usage": 0,
                "trx_id": "27c120548fee4e0ca31bc779ba85eb61ea4a2c5204043b696800d6cdb11da48b",
                "inline_traces": [
                    {
                        "receipt": {
                            "receiver": "testneths111",
                            "act_digest": "28d41460e20878bc412281b80c4d46ce174a4a48e8c7caf9ef28a13383e72d9e",
                            "global_sequence": 32149271,
                            "recv_sequence": 8,
                            "auth_sequence": [
                                [
                                    "testnetyy111",
                                    41
                                ]
                            ],
                            "code_sequence": 1,
                            "abi_sequence": 1
                        },
                        "act": {
                            "account": "testnetyy111",
                            "name": "transfer",
                            "authorization": [
                                {
                                    "actor": "testnetyy111",
                                    "permission": "active"
                                }
                            ],
                            "data": {
                                "from": "testnetyy111",
                                "to": "testneths111",
                                "quantity": "100.0000 RAY",
                                "memo": "hello there"
                            },
                            "hex_data": "1042f03eab99b1ca1042c02dab99b1ca40420f000000000004524159000000000b68656c6c6f207468657265"
                        },
                        "elapsed": 14,
                        "cpu_usage": 0,
                        "console": "",
                        "total_cpu_usage": 0,
                        "trx_id": "27c120548fee4e0ca31bc779ba85eb61ea4a2c5204043b696800d6cdb11da48b",
                        "inline_traces": []
                    }
                ]
            }
        ],
        "except": null
    }
}

3.2.8 查询转账完成后的余额

testnetyy111 "99999700.0000 RAY"
testneths111 "300.0000 RAY"

转自:https://blog.csdn.net/akai9898/article/details/83447788

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
2008年爆发全球金融危机,同年11月1日,一个自称中本聪(Satoshi Nakamoto)的人在P2P foundation网站上发布了比特币白皮书《比特币:一种点对点的电子现金系统》 [6]  ,陈述了他对电子货币的新设想——比特币就此面世。2009年1月3日,比特币创世区块诞生。 和法定货币相比,比特币没有一个集中的发行方,而是由网络节点的计算生成,谁都有可能参与制造比特币,而且可以全世界流通,可以在任意一台接入互联网的电脑上买卖,不管身处何方,任何人都可以挖掘、购买、出售或收取比特币,并且在交易过程中外人无法辨认用户身份信息。2009年1月5日,不受央行和任何金融机构控制的比特币诞生。比特币是一种数字货币,由计算机生成的一串串复杂代码组成,新比特币通过预设的程序制造。 每当比特币进入主流媒体的视野时,主流媒体总会请一些主流经济学家分析一下比特币。早先,这些分析总是集中在比特币是不是骗局。而现如今的分析总是集中在比特币能否成为未来的主流货币。而这其中争论的焦点又往往集中在比特币的通缩特性上。 [7]  不少比特币玩家是被比特币的不能随意增发所吸引的。和比特币玩家的态度截然相反,经济学家们对比特币2100万固定总量的态度两极分化。 凯恩斯学派的经济学家们认为政府应该积极调控货币总量,用货币政策的松紧来为经济适时的加油或者刹车。因此,他们认为比特币固定总量货币牺牲了可调控性,而且更糟糕的是将不可避免地导致通货紧缩,进而伤害整体经济。奥地利学派经济学家们的观点却截然相反,他们认为政府对货币的干预越少越好,货币总量的固定导致的通缩并没什么大不了的,甚至是社会进步的标志。 比特币网络通过“挖矿”来生成新的比特币。所谓“挖矿”实质上是用计算机解决一项复杂的数学问题,来保证比特币网络分布式记账系统的一致性。比特币网络会自动调整数学问题的难度,让整个网络约每10分钟得到一个合格答案。随后比特币网络会新生成一定量的比特币作为区块奖励,奖励获得答案的人。 [6]  2009年,比特币诞生的时候,区块奖励是50个比特币。诞生10分钟后,第一批50个比特币生成了,而此时的货币总量就是50。随后比特币就以约每10分钟50个的速度增长。当总量达到1050万时(2100万的50%),区块奖励减半为25个。当总量达到1575万(新产出525万,即1050的50%)时,区块奖励再减半为12.5个。该货币系统曾在4年内只有不超过1050万个,之后的总数量将被永久限制在约2100万个。 [3]  [8]  比特币是一种虚拟货币,数量有限,但是可以用来套现:可以兑换成大多数国家的货币。你可以使用比特币购买一些虚拟的物品,比如网络游戏当中的衣服、帽子、装备等,只要有人接受,你也可以使用比特币购买现实生活当中的物品。 2014年2月25日,“比特币中国”的比特币开盘价格为3562.41元,截至下午4点40分,价格已下跌至3185元,跌幅逾10%。根据该平台的历史行情数据显示,在2014年1月27日,1比特币还能兑换5032元人民币。这意味着,该平台上不到一个月,比特币价格已下跌了36.7%。 同年9月9日,美国电商巨头eBay宣布,该公司旗下支付处理子公司Braintree将开始接受比特币支付。该公司已与比特币交易平台Coinbase达成合作,开始接受这种相对较新的支付手段。 虽然eBay市场交易平台和PayPal业务还不接受比特币支付,但旅行房屋租赁社区Airbnb和租车服务Uber等Braintree客户将可开始接受这种虚拟货币。Braintree的主要业务是面向企业提供支付处理软件,该公司在2013年被eBay以大约8亿美元的价格收购。 2017年1月22日晚间,火币网、比特币中国与OKCoin币行相继在各自官网发布公告称,为进一步抑制投机,防止价格剧烈波动,各平台将于1月24日中午12:00起开始收取交易服务费,服务费按成交金额的0.2%固定费率收取,且主动成交和被动成交费率一致。 [9]  5月5日,OKCoin币行网的新数据显示,比特币的价格刚刚再度刷新历史,截止发稿前高触及9222元人民币高位。1月24日中午12:00起,中国三大比特币平台正式开始收取交易费。9月4日,央行等七部委发公告称中国禁止虚拟货币交易。同年12月17日,比特币达到历史高价19850美元。 2018年11月25日,比特币跌破4000美元大关,后稳定在3000多美元。 [10]  11月19日,加密货币恢复跌势,比特币自2017年10月以来首次下探5000美元大关,原因是之前BCH出现硬分叉,且监管部门对首次代币发行(ICO)加强了审查。 [10]  11月21日凌晨4点半,coinbase平台比特币报价跌破4100美元,创下了13个月以来的新低。 2019年4月,比特币再次突破5000美元大关,创年内新高。 [11]  5月12日,比特币近八个月来首次突破7000美元。 [12]  5月14日,据coinmarketcap报价显示,比特币站上8000美元,24小时内上涨14.68%。 [13]  6月22日 ,比特币价格突破10000美元大关。比特币价格在10200左右震荡,24小时涨幅近7%。 [14]  6月26日,比特币价格一举突破12000美元,创下自去年1月来近17个月高点。 [15]  6月27日早间,比特币价格一度接近14000美元,再创年内新高。 [16]  2020年2月10日,比特币突破了一万美元。据交易数据,比特币的价格涨幅突破3% [17]  。3月12日,据加密货币交易平台Bitstamp数据显示,19点44分,比特币低价格已跌至5731美元 [18]  。5月8日,比特币突破10000美元关口,创下2月份以来的新高 [19]  。5月10日早上8点开始,比特币单价在半小时内从9500美元价位瞬间下跌了上千美元,低价格跌破8200美元,高价差超1400美元 [20]  。7月26日下午6点,比特币短时极速拉升,高触及10150.15USDT,日内大涨幅超过4%,这是2020年6月2日以来首次突破1万美元关口 [21]  。11月4日,比特币价格正式突破14000美元 [22]  。11月12日晚,比特币价格突破16000美元,刷新2018年1月以来新高,一周涨超8.6%。比特币总市值突破2915亿美元 [23]  。11月18日,比特币价格突破17000美元 [24]  。12月1日,比特币价格报19455.31美元,24小时涨幅为5.05%。 [25]  12月17日,比特币价格突破23000美元整数关口,刷新历史新高,日内涨幅超7.5%。 [26]  截至12月27日19时20分,比特币报价28273.06美元。 [27]  2021年1月8日,比特币涨至4万美元关口上方,高至40402美元
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值