目录
写在开始之前
Step 1: 创建一个区块链
描述区块链
块是什么样的 ?
添加交易到区块
创建新的区块
工作量证明算法
Step 2: Blockchain 作为 API 接口
创建节点
发送交易
挖矿
Step 3: 运行区块链
Step 4: 一致性(共识)
注册节点
实现共识算法
首页 后端开发 Python教程 使用Python 搭建自己的区块链

使用Python 搭建自己的区块链

Sep 01, 2020 pm 05:46 PM
python 区块链

使用Python 搭建自己的区块链

【相关学习推荐:python教程

你是否会和我一样,对加密数字货币底层的区块链技术非常感兴趣,特别想了解他们的运行机制。

但是学习区块链技术并非一帆风顺,我看多了大量的视频教程还有各种课程,最终的感觉就是真正可用的实战课程太少。

我喜欢在实践中学习,尤其喜欢一代码为基础去了解整个工作机制。如果你我一样喜欢这种学习方式,当你学完本教程时,你将会知道区块链技术是如何工作的。

写在开始之前

记住,区块链是一个 不可变的、有序的 被称为块的记录链。它们可以包含交易、文件或任何您喜欢的数据。但重要的是,他们用哈希 一起被链接在一起。

如果你不熟悉哈希,这里是一个解释。

该指南的目的是什么?

你可以舒服地阅读和编写基础的 Python,因为我们将通过 HTTP 与区块链进行讨论,所以你也要了解 HTTP 的工作原理。

我需要准备什么?  

确定安装了 Python 3.6 + (还有 pip) ,你还需要安装 Flask、 Requests 库:

1

    pip install Flask==0.12.2 requests==2.18.4

登录后复制

对了, 你还需要一个支持HTTP的客户端, 比如 Postman 或者 cURL,其他也可以。

源码在哪儿?
可以点击这里

Step 1: 创建一个区块链

打开你最喜欢的文本编辑器或者IDE, 我个人比较喜欢 PyCharm. 新建一个名为blockchain.py的文件。 我们将只用这一个文件就可以。但是如果你还是不太清楚, 你也可以参考 源码.

描述区块链

我们要创建一个 Blockchain 类 ,他的构造函数创建了一个初始化的空列表(要存储我们的区块链),并且另一个存储交易。下面是我们这个类的实例:

blockchain.py

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

class Blockchain(object):

    def __init__(self):

        self.chain = []

        self.current_transactions = []

 

    def new_block(self):

        # Creates a new Block and adds it to the chain

        pass

 

    def new_transaction(self):

        # Adds a new transaction to the list of transactions

        pass

 

    @staticmethod

    def hash(block):

        # Hashes a Block

        pass

 

    @property

    def last_block(self):

        # Returns the last Block in the chain

        pass

登录后复制

我们的 Blockchain 类负责管理链式数据,它会存储交易并且还有添加新的区块到链式数据的Method。让我们开始扩充更多Method。

块是什么样的 ?

每个块都有一个  索引,一个 时间戳(Unix时间戳),一个事务列表, 一个 校验(稍后详述) 和 前一个块的散列

下面是一个Block的例子 :

blockchain.py

1

2

3

4

5

6

7

8

9

10

11

12

13

block = {

    'index': 1,

    'timestamp': 1506057125.900785,

    'transactions': [

        {

            'sender'"8527147fe1f5426f9dd545de4b27ee00",

            'recipient'"a77f5cdfa2934df3954a5c7c7da5df1f",

            'amount': 5,

        }

    ],

    'proof': 324984774000,

    'previous_hash'"2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824"

}

登录后复制

在这一点上,一个 区块链 的概念应该是明显的 - 每个新块都包含在其内的前一个块的 散列 。 这是至关重要的,因为这是 区块链 不可改变的原因:如果攻击者损坏 区块链 中较早的块,则所有后续块将包含不正确的哈希值。

这有道理吗? 如果你还没有想通,花点时间仔细思考一下 - 这是区块链背后的核心理念。

添加交易到区块

我们将需要一个添加交易到区块的方式。我们的 new_transaction() 方法的责任就是这个, 并且它非常的简单:

blockchain.py

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

class Blockchain(object):

    ...

 

    def new_transaction(self, sender, recipient, amount):

        """

        Creates a new transaction to go into the next mined Block

        :param sender: <str> Address of the Sender

        :param recipient: <str> Address of the Recipient

        :param amount: <int> Amount

        :return: <int> The index of the Block that will hold this transaction

        """

 

        self.current_transactions.append({

            'sender': sender,

            'recipient': recipient,

            'amount': amount,

        })

 

        return self.last_block['index'] + 1

登录后复制

 new_transaction() 方法添加了交易到列表,它返回了交易将被添加到的区块的索引---讲开采下一个这对稍后对提交交易的用户有用。

创建新的区块

当我们的  Blockchain  被实例化后,我们需要将 创世 区块(一个没有前导区块的区块)添加进去进去。我们还需要向我们的起源块添加一个 证明,这是挖矿的结果(或工作证明)。 我们稍后会详细讨论挖矿。

除了在构造函数中创建 创世 区块外,我们还会补全  new_block() 、  new_transaction()  和 hash() 函数:

blockchain.py

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

import hashlib

import json

from time import time

 

class Blockchain(object):

    def __init__(self):

        self.current_transactions = []

        self.chain = []

 

        # 创建创世区块

        self.new_block(previous_hash=1, proof=100)

 

    def new_block(self, proof, previous_hash=None):

        """

        创建一个新的区块到区块链中

        :param proof: <int> 由工作证明算法生成的证明

        :param previous_hash: (Optional) <str> 前一个区块的 hash 值

        :return: <dict> 新区块

        """

 

        block = {

            'index': len(self.chain) + 1,

            'timestamp': time(),

            'transactions': self.current_transactions,

            'proof': proof,

            'previous_hash': previous_hash or self.hash(self.chain[-1]),

        }

 

        # 重置当前交易记录

        self.current_transactions = []

 

        self.chain.append(block)

        return block

 

    def new_transaction(self, sender, recipient, amount):

        """

        创建一笔新的交易到下一个被挖掘的区块中

        :param sender: <str> 发送人的地址

        :param recipient: <str> 接收人的地址

        :param amount: <int> 金额

        :return: <int> 持有本次交易的区块索引

        """

        self.current_transactions.append({

            'sender': sender,

            'recipient': recipient,

            'amount': amount,

        })

 

        return self.last_block['index'] + 1

 

    @property

    def last_block(self):

        return self.chain[-1]

 

    @staticmethod

    def hash(block):

        """

        给一个区块生成 SHA-256 值

        :param block: <dict> Block

        :return: <str>

        """

 

        # 我们必须确保这个字典(区块)是经过排序的,否则我们将会得到不一致的散列

        block_string = json.dumps(block, sort_keys=True).encode()

        return hashlib.sha256(block_string).hexdigest()

登录后复制

上面的代码应该是直白的 --- 为了让代码清晰,我添加了一些注释和文档说明。 我们差不多完成了我们的区块链。 但在这个时候你一定很疑惑新的块是怎么被创建、锻造或挖掘的。

工作量证明算法

使用工作量证明(PoW)算法,来证明是如何在区块链上创建或挖掘新的区块。PoW 的目标是计算出一个符合特定条件的数字,这个数字对于所有人而言必须在计算上非常困难,但易于验证。这是工作证明背后的核心思想。

我们将看到一个简单的例子帮助你理解:

假设一个整数 x 乘以另一个整数 y 的积的 Hash 值必须以 0 结尾,即 hash(x * y) = ac23dc...0。设 x = 5,求y

用 Python 实现:

1

2

3

4

5

6

from hashlib import sha256

x = 5

y = 0  # We don't know what y should be yet...

while sha256(f'{x*y}'.encode()).hexdigest()[-1] != "0":

    y += 1

print(f'The solution is y = {y}')

登录后复制

结果是:y = 21。因为,生成的 Hash 值结尾必须为 0

1

hash(5 * 21) = 1253e9373e...5e3600155e860

登录后复制

在比特币中,工作量证明算法被称为 Hashcash ,它和上面的问题很相似,只不过计算难度非常大。这就是矿工们为了争夺创建区块的权利而争相计算的问题。 通常,计算难度与目标字符串需要满足的特定字符的数量成正比,矿工算出结果后,就会获得一定数量的比特币奖励(通过交易)。

验证结果,当然非常容易。

实现工作量证明

让我们来实现一个相似 PoW 算法。规则类似上面的例子:

找到一个数字 P ,使得它与前一个区块的 Proof 拼接成的字符串的 Hash 值以 4 个零开头。

blockchain.py

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

import hashlib

import json

 

from time import time

from uuid import uuid4

 

class Blockchain(object):

    ...

 

    def proof_of_work(self, last_proof):

        """

        Simple Proof of Work Algorithm:

         - Find a number p' such that hash(pp') contains leading 4 zeroes, where p is the previous p'

         - p is the previous proof, and p' is the new proof

        :param last_proof: <int>

        :return: <int>

        """

 

        proof = 0

        while self.valid_proof(last_proof, proof) is False:

            proof += 1

 

        return proof

 

    @staticmethod

    def valid_proof(last_proof, proof):

        """

        Validates the Proof: Does hash(last_proof, proof) contain 4 leading zeroes?

        :param last_proof: <int> Previous Proof

        :param proof: <int> Current Proof

        :return: <bool> True if correct, False if not.

        """

 

        guess = f'{last_proof}{proof}'.encode()

        guess_hash = hashlib.sha256(guess).hexdigest()

        return guess_hash[:4] == "0000"

登录后复制

衡量算法复杂度的办法是修改零开头的个数。使用 4 个来用于演示,你会发现多一个零都会大大增加计算出结果所需的时间。

现在 Blockchain 类基本已经完成了,接下来使用 HTTP Requests 来进行交互。

Step 2: Blockchain 作为 API 接口

我们将使用 Python Flask 框架,这是一个轻量 Web 应用框架,它方便将网络请求映射到 Python 函数,现在我们来让 Blockchain 运行在基于 Flask web 上。

我们将创建三个接口:

  • /transactions/new 创建一个交易并添加到区块
  • /mine 告诉服务器去挖掘新的区块
  • /chain 返回整个区块链

创建节点

我们的 Flask 服务器 将扮演区块链网络中的一个节点。我们先添加一些框架代码:

blockchain.py

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

import hashlib

import json

from textwrap import dedent

from time import time

from uuid import uuid4

 

from flask import Flask

 

class Blockchain(object):

    ...

 

# Instantiate our Node(实例化我们的节点)

app = Flask(__name__)

 

# Generate a globally unique address for this node(为这个节点生成一个全球唯一的地址)

node_identifier = str(uuid4()).replace('-''')

 

# Instantiate the Blockchain(实例化 Blockchain类)

blockchain = Blockchain()

 

@app.route('/mine', methods=['GET'])

def mine():

    return "We'll mine a new Block"

 

@app.route('/transactions/new', methods=['POST'])

def new_transaction():

    return "We'll add a new transaction"

 

@app.route('/chain', methods=['GET'])

def full_chain():

    response = {

        'chain': blockchain.chain,

        'length': len(blockchain.chain),

    }

    return jsonify(response), 200

 

if __name__ == '__main__':

    app.run(host='0.0.0.0', port=5000)

登录后复制

简单的说明一下以上代码:

  • 第 15 行:实例化节点。阅读更多关于 Flask 内容。
  • 第 18 行:为节点创建一个随机的名称。.
  • 第 21 行:实例化 Blockchain 类。
  • 第 24--26 行:创建 /mine 接口,GET 方式请求。 
  • 第 28--30 行:创建 /transactions/new 接口,POST 方式请求,可以给接口发送交易数据。
  • 第 32--38 行:创建 /chain 接口,返回整个区块链。
  • 第 40--41 行:服务器运行端口 5000 。

发送交易

发送到节点的交易数据结构如下:

1

2

3

4

5

{

 "sender""my address",

 "recipient""someone else's address",

 "amount": 5

}

登录后复制

因为我们已经有了添加交易的方法,所以基于接口来添加交易就很简单了。让我们为添加事务写函数:

blockchain.py

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

import hashlib

import json

from textwrap import dedent

from time import time

from uuid import uuid4

 

from flask import Flask, jsonify, request

 

...

 

@app.route('/transactions/new', methods=['POST'])

def new_transaction():

    values = request.get_json()

 

    # Check that the required fields are in the POST'ed data

    required = ['sender''recipient''amount']

    if not all(k in values for k in required):

        return 'Missing values', 400

 

    # Create a new Transaction

    index = blockchain.new_transaction(values['sender'], values['recipient'], values['amount'])

 

    response = {'message': f'Transaction will be added to Block {index}'}

    return jsonify(response), 201

登录后复制

挖矿

挖矿正是神奇所在,它很简单,做了一下三件事:

  1. 计算工作量证明 PoW
  2. 通过新增一个交易授予矿工(自己)一个币
  3. 构造新区块并将其添加到链中

blockchain.py

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

import hashlib

import json

 

from time import time

from uuid import uuid4

 

from flask import Flask, jsonify, request

 

...

 

@app.route('/mine', methods=['GET'])

def mine():

    # We run the proof of work algorithm to get the next proof...

    last_block = blockchain.last_block

    last_proof = last_block['proof']

    proof = blockchain.proof_of_work(last_proof)

 

    # We must receive a reward for finding the proof.

    # The sender is "0" to signify that this node has mined a new coin.

    blockchain.new_transaction(

        sender="0",

        recipient=node_identifier,

        amount=1,

    )

 

    # Forge the new Block by adding it to the chain

    previous_hash = blockchain.hash(last_block)

    block = blockchain.new_block(proof, previous_hash)

 

    response = {

        'message'"New Block Forged",

        'index': block['index'],

        'transactions': block['transactions'],

        'proof': block['proof'],

        'previous_hash': block['previous_hash'],

    }

    return jsonify(response), 200

登录后复制

注意交易的接收者是我们自己的服务器节点,我们做的大部分工作都只是围绕 Blockchain 类方法进行交互。到此,我们的区块链就算完成了,我们来实际运行下。

Step 3: 运行区块链

你可以使用 cURL 或 Postman 去和 API 进行交互

启动 Server:

1

2

$ python blockchain.py

* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

登录后复制

让我们通过请求 http://localhost:5000/mine ( GET )来进行挖矿:

file

用 Postman 发起一个 GET 请求.

创建一个交易请求,请求 http://localhost:5000/transactions/new (POST),如图

file

如果不是使用 Postman,则用一下的 cURL 语句也是一样的:

1

2

3

4

5

$ curl -X POST -H "Content-Type: application/json" -d '{

 "sender""d4ee26eee15148ee92c6cd394edd974e",

 "recipient""someone-other-address",

 "amount": 5

}' "http://localhost:5000/transactions/new"

登录后复制

在挖了两次矿之后,就有 3 个块了,通过请求 http://localhost:5000/chain 可以得到所有的块信息

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

{

  "chain": [

    {

      "index": 1,

      "previous_hash": 1,

      "proof": 100,

      "timestamp": 1506280650.770839,

      "transactions": []

    },

    {

      "index": 2,

      "previous_hash""c099bc...bfb7",

      "proof": 35293,

      "timestamp": 1506280664.717925,

      "transactions": [

        {

          "amount": 1,

          "recipient""8bbcb347e0634905b0cac7955bae152b",

          "sender""0"

        }

      ]

    },

    {

      "index": 3,

      "previous_hash""eff91a...10f2",

      "proof": 35089,

      "timestamp": 1506280666.1086972,

      "transactions": [

        {

          "amount": 1,

          "recipient""8bbcb347e0634905b0cac7955bae152b",

          "sender""0"

        }

      ]

    }

  ],

  "length": 3

}

登录后复制

Step 4: 一致性(共识)

我们已经有了一个基本的区块链可以接受交易和挖矿。但是区块链系统应该是分布式的。既然是分布式的,那么我们究竟拿什么保证所有节点有同样的链呢?这就是一致性问题,我们要想在网络上有多个节点,就必须实现一个一致性的算法。

注册节点

在实现一致性算法之前,我们需要找到一种方式让一个节点知道它相邻的节点。每个节点都需要保存一份包含网络中其它节点的记录。因此让我们新增几个接口:

  1. /nodes/register 接收 URL 形式的新节点列表.
  2. /nodes/resolve 执行一致性算法,解决任何冲突,确保节点拥有正确的链.

我们修改下 Blockchain 的 init 函数并提供一个注册节点方法:

blockchain.py

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

...

from urllib.parse import urlparse

...

 

class Blockchain(object):

    def __init__(self):

        ...

        self.nodes = set()

        ...

 

    def register_node(self, address):

        """

        Add a new node to the list of nodes

        :param address: <str> Address of node. Eg. 'http://192.168.0.5:5000'

        :return: None

        """

 

        parsed_url = urlparse(address)

        self.nodes.add(parsed_url.netloc)

登录后复制

我们用 set 来储存节点,这是一种避免重复添加节点的简单方法.

实现共识算法

就像先前讲的那样,当一个节点与另一个节点有不同的链时,就会产生冲突。 为了解决这个问题,我们将制定最长的有效链条是最权威的规则。换句话说就是:在这个网络里最长的链就是最权威的。 我们将使用这个算法,在网络中的节点之间达成共识。

blockchain.py

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

...

import requests

 

class Blockchain(object)

    ...

 

    def valid_chain(self, chain):

        """

        Determine if a given blockchain is valid

        :param chain: <list> A blockchain

        :return: <bool> True if valid, False if not

        """

 

        last_block = chain[0]

        current_index = 1

 

        while current_index < len(chain):

            block = chain[current_index]

            print(f'{last_block}')

            print(f'{block}')

            print("\n-----------\n")

            # Check that the hash of the block is correct

            if block['previous_hash'] != self.hash(last_block):

                return False

 

            # Check that the Proof of Work is correct

            if not self.valid_proof(last_block['proof'], block['proof']):

                return False

 

            last_block = block

            current_index += 1

 

        return True

 

    def resolve_conflicts(self):

        """

        This is our Consensus Algorithm, it resolves conflicts

        by replacing our chain with the longest one in the network.

        :return: <bool> True if our chain was replaced, False if not

        """

 

        neighbours = self.nodes

        new_chain = None

 

        # We're only looking for chains longer than ours

        max_length = len(self.chain)

 

        # Grab and verify the chains from all the nodes in our network

        for node in neighbours:

            response = requests.get(f'http://{node}/chain')

 

            if response.status_code == 200:

                length = response.json()['length']

                chain = response.json()['chain']

 

                # Check if the length is longer and the chain is valid

                if length > max_length and self.valid_chain(chain):

                    max_length = length

                    new_chain = chain

 

        # Replace our chain if we discovered a new, valid chain longer than ours

        if new_chain:

            self.chain = new_chain

            return True

 

        return False

登录后复制

第一个方法 valid_chain() 负责检查一个链是否有效,方法是遍历每个块并验证散列和证明。

resolve_conflicts() 是一个遍历我们所有邻居节点的方法,下载它们的链并使用上面的方法验证它们。 如果找到一个长度大于我们的有效链条,我们就取代我们的链条。

我们将两个端点注册到我们的API中,一个用于添加相邻节点,另一个用于解决冲突:

blockchain.py

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

@app.route('/nodes/register', methods=['POST'])

def register_nodes():

    values = request.get_json()

 

    nodes = values.get('nodes')

    if nodes is None:

        return "Error: Please supply a valid list of nodes", 400

 

    for node in nodes:

        blockchain.register_node(node)

 

    response = {

        'message''New nodes have been added',

        'total_nodes': list(blockchain.nodes),

    }

    return jsonify(response), 201

 

@app.route('/nodes/resolve', methods=['GET'])

def consensus():

    replaced = blockchain.resolve_conflicts()

 

    if replaced:

        response = {

            'message''Our chain was replaced',

            'new_chain': blockchain.chain

        }

    else:

        response = {

            'message''Our chain is authoritative',

            'chain': blockchain.chain

        }

 

    return jsonify(response), 200

登录后复制

在这一点上,如果你喜欢,你可以使用一台不同的机器,并在你的网络上启动不同的节点。 或者使用同一台机器上的不同端口启动进程。 我在我的机器上,不同的端口上创建了另一个节点,并将其注册到当前节点。 因此,我有两个节点:http://localhost:5000http://localhost:5001。 注册一个新节点:

file

然后我在节点 2 上挖掘了一些新的块,以确保链条更长。 之后,我在节点1上调用 GET /nodes/resolve,其中链由一致性算法取代:

file

这是一个包,去找一些朋友一起,以帮助测试你的区块链。

我希望本文能激励你创造更多新东西。我之所以对数字货币入迷,是因为我相信区块链会很快改变我们看待事物的方式,包括经济、政府、档案管理等。

更新:我计划在接下来的第2部分中继续讨论区块链交易验证机制,并讨论一些可以让区块链进行生产的方法。

相关推荐:编程视频课程

以上是使用Python 搭建自己的区块链的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1672
14
CakePHP 教程
1428
52
Laravel 教程
1332
25
PHP教程
1276
29
C# 教程
1256
24
恒星(XLM)随着华尔街接受令牌化的重大增长 - 专家解释说 恒星(XLM)随着华尔街接受令牌化的重大增长 - 专家解释说 May 08, 2025 pm 09:12 PM

Stellar再次引起广泛关注,这不仅仅是炒作。在一则新视频中,来自Ncashofficial的加密专家Nick,拥有超过200,000订阅者,详细分析了Stellar的情况。尽管Stellar的XLM在第一层的领域展现了对资产代币化的承诺,并拥有令人瞩目的合作伙伴组合,但关于XLM的讨论主要集中在其突破阻力和保持动力方面的挑战。然而,拥有超过206,000订阅者的Ncashofficial的加密货币专家Nick最近的分析显示,XLM可能是最被忽视的代币之一。随着华尔街继续向区块链和BenHor

ok交易所国内如何注册?ok交易平台大陆新手注册使用指南 ok交易所国内如何注册?ok交易平台大陆新手注册使用指南 May 08, 2025 pm 10:51 PM

在加密货币市场中,选择一个可靠的交易平台是至关重要的。OK交易平台作为全球知名的数字资产交易所,吸引了大量大陆新手用户。本指南将详细介绍如何在OK交易平台上进行注册和使用,帮助新手用户快速上手。

币圈交易平台app排名前十 炒币平台app最新排行榜 币圈交易平台app排名前十 炒币平台app最新排行榜 May 08, 2025 pm 11:00 PM

2025年全球十大加密货币交易平台APP依次为:1. Binance(币安),全球交易量第一,支持600 加密货币,冷钱包存储98%资产;2. OKX(欧易),合约交易量全球第三,推出元宇宙交易大厅;3. Coinbase,美国最大合规交易所,支持美元直接交易,用户超1亿;4. Bybit,衍生品交易量全球第二,推出现货流动性配对计划;5. Bitget,复制交易功能行业领先,聚焦亚洲市场;6. MEXC Global,主打山寨币交易,支持2276种加密货币;7. Gate.io(芝麻开门),老

零基础躺赚攻略:2025年必囤的5种山寨币,稳赚50倍! 零基础躺赚攻略:2025年必囤的5种山寨币,稳赚50倍! May 08, 2025 pm 08:30 PM

在加密货币市场中,山寨币(altcoins)常常被投资者视为潜在的高回报资产。虽然市场上存在许多山寨币,但并非所有山寨币都能带来预期的收益。本文将为零基础的投资者提供一份详细的攻略,介绍2025年值得囤积的5种山寨币,并解释如何通过这些投资实现稳赚50倍的目标。

Python vs. JavaScript:开发人员的比较分析 Python vs. JavaScript:开发人员的比较分析 May 09, 2025 am 12:22 AM

Python和JavaScript的主要区别在于类型系统和应用场景。1.Python使用动态类型,适合科学计算和数据分析。2.JavaScript采用弱类型,广泛用于前端和全栈开发。两者在异步编程和性能优化上各有优势,选择时应根据项目需求决定。

币安Binance交易所安装、注册详细指南(2025最新步骤) 币安Binance交易所安装、注册详细指南(2025最新步骤) May 08, 2025 pm 11:06 PM

币安(Binance)是全球领先的加密货币交易平台之一,提供多种数字资产的交易服务。如果你正在考虑使用币安进行加密货币交易,本文将为你提供详细的安装和注册指南。

币圈十大加密货币交易所排行榜 十大数字货币交易平台2025年最新排名 币圈十大加密货币交易所排行榜 十大数字货币交易平台2025年最新排名 May 08, 2025 pm 10:45 PM

币圈十大加密货币交易所排名:1. Binance:全球领先,提供高效交易和多种金融产品。2. OKX:创新多样,支持多种交易类型。3. Huobi:稳定可靠,服务优质。4. Coinbase:新手友好,界面简洁。5. Kraken:专业交易者首选,工具强大。6. Bitfinex:高效交易,交易对丰富。7. Bittrex:安全合规,监管合作。8. Poloniex等等。

欧易ios官方网站入口 okx欧易官方网站苹果手机注册入口 欧易ios官方网站入口 okx欧易官方网站苹果手机注册入口 May 08, 2025 pm 11:09 PM

如果你是一位苹果手机用户,并且对加密货币交易感兴趣,那么你一定不能错过OKX欧易这个平台。OKX欧易作为全球领先的加密货币交易所之一,提供了多种数字资产的交易服务,涵盖了比特币、以太坊、莱特币等主流币种,同时还支持多种山寨币和新兴代币的交易。无论你是刚入门的投资者,还是经验丰富的交易者,OKX欧易都能够满足你的需求。下面我们将详细介绍如何通过苹果手机在OKX欧易官方网站上进行注

See all articles