区块链基本常识02,


三角套利

用两个市场(比如BTC/CNY,LTC/CNY)的价格(分别记为P1,P2),计算出一个公允的LTC/BTC价格(P2/P1),如果该公允价格跟实际的LTC/BTC市场价格(记为P3)不一致,就产生了套利机会

  • 假如实际的LTC/BTC市场价格P3低于公允价格(P3 < P2/P1),就在LTC/BTC市场买入一定数量(记为Q3)的LTC(花费相应数量P3*Q3的BTC),同时在LTC/CNY市场卖出数量为Q3的LTC(得到相应数量P2*Q3的CNY),在BTC/CNY市场买入数量为P3*Q3的BTC(花费相应数量P1*P3*Q3的CNY)。整个过程中,BTC和LTC的数量不变,而CNY的数量增多(P2*Q3-P1*P3*Q3= P1*Q3*(P2/P1 – P3) > 0 ),从而实现稳定盈利。
  • 假如实际的LTC/BTC价格P3高于公允价格(P3>P2/P1),就在LTC/BTC市场卖出一定数量(记为Q3)的LTC(得到相应数量P3*Q3的BTC),同时在LTC/CNY市场买入数量为Q3的LTC(花费相应数量P2*Q3的CNY),在BTC/CNY市场卖出数量为P3*Q3的BTC(获得相应数量P1*P3*Q3的CNY)。整个过程中,BTC和LTC的数量不变,而CNY的数量增多(P1*P3*Q3-P2*Q3= P1*Q3*(P3-P2/P1) > 0),从而实现稳定盈利。

总结来说:三角套利就是通过币与币之间的差价,进行换取产生盈利

比特币

  • 比特币区块链是整个比特币网络所依赖的公共共享总帐。所有确认的交易均包含在区块链中。这样比特币钱包可以计算出可用余额,并核实新的交易中消费方花费的确实是自己的比特币。密码学确保了区块链的完整性和时间顺序。
  • 一笔交易是指包含在区块链里的比特币钱包之间的价值转移。 比特币钱包保存着一份称作私钥或种子的保密数据用来为交易签名,即提供数学证据证明这些交易来自钱包的拥有者。这个 签名也确保交易发生后不会被任何人修改。所有的交易在用户之间广播,通常在接下来的10-20分钟内通过一个称作 挖矿的处理过程开始被比特币网络所确认。
  • 挖矿是个将待确认的交易数据包含到区块链中,从而完成对这些交易进行确认的分布式共识系统。通过挖矿,可以强制性保证块链中的数据按时间顺序存储,保持比特币网络的中立性,且允许比特币网络上不同的计算机对系统状态达成一致。交易要获得确认,必须要被打包到一个符合非常严格的密码学规则的区块中,并通过比特币网络进行验证。这些规则可以防止对已有块的修改,因为一旦有改动,之后所有的块都将失效。挖矿的难度和中彩票相当,没人可以轻易地、连续地将新块加入到块链中。因此,没有集体和个人可以控制块链中包含什么样的内容或者替换掉块链中的部分内容以达到撤销他们交易的目的。

比特币合法地址是2^160个。比特币私钥是32字节(256位)的随机数,并且有一定大小范围的限制,所以合法的比特币私钥个数介于2^255~2^256之间
一般BTC地址的长度是34位,也有33位,BTC最短长度是26位,最长长度是34位。

挖矿的矿机其实是一台能进行高速计算的电脑,每台装有比特币软件的电脑都可以通过竞争的方法来记账,记账的过程就是把一批交易进行打包,形成一个区块,就像我们前面看到的那样,这些区块一个个首尾相接,就形成了区块链。

获取各个交易区的买卖数据

import requests
import time
import re


def get(url):
    while True:
        try:
            r = requests.get(url)
        except Exception:
            time.sleep(0.5)
            continue
        if r.status_code != 200:
            time.sleep(0.5)
            continue
        return r.text

# 获取数据
def getticker(market):
    url = f'http://api.zb.cn/data/v1/depth?market={market}&size=50'
    return get(url)

# 获取交易区的货币列表
da = requests.get('https://trans.zb.cn/zbqc')
list = re.findall('href="https://trans.zb.cn/markets/(.*?)"', da.text)
for v in list:
    data = getticker(v)
    with open(f'data/{v}.json', 'a', encoding='utf8') as fp:
        fp.write(data)

相关内容

    暂无相关文章