国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

創(chuàng)建一個區(qū)塊鏈,是由三個節(jié)點(diǎn)組成的去中心化網(wǎng)絡(luò)。

這篇具有很好參考價值的文章主要介紹了創(chuàng)建一個區(qū)塊鏈,是由三個節(jié)點(diǎn)組成的去中心化網(wǎng)絡(luò)。。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

目錄

一、準(zhǔn)備工作:

1、創(chuàng)建三個python文件:

2、創(chuàng)建nodes.json文件

3、transaction.json文件

4、打開三個控制臺

二、在三個節(jié)點(diǎn)上進(jìn)行交互。

二、添加交易發(fā)布請求(a向b發(fā)送10000coin)


一、準(zhǔn)備工作:

1、創(chuàng)建三個python文件:

lancoin_node_5001.py、lancoin_node_5002.py、lancoin_node_5003.py。

它們每個都將連接到不同的端口,一個端口用于a,一個端口用于b,一個端口用于c。

a在端口5001上,b在端口5002上,c在端口5003上

代碼示例(lancoin_node_5001.py):

 # Module 1 -Create a Cryptocurrency
#To be installed:
#Flask==0.12.2:pip install Flask==0.12.2
#Postman HTrp Client:https://www.getpostman.com
#requests==2.18.4:pip install requests=-2.18.4
#時間戳
import datetime
import hashlib
import json
#Flask可以定義Web應(yīng)用的路由(URL到Python函數(shù)的映射),并處理HTTP請求和響應(yīng)。jsonify是一個函數(shù),用于將Python對象轉(zhuǎn)換為JSON格式的響應(yīng)。當(dāng)你在Flask路由函數(shù)中返回一個jsonify對象時,F(xiàn)lask會自動將該對象對應(yīng)的數(shù)據(jù)轉(zhuǎn)換為JSON格式,并設(shè)置合適的HTTP響應(yīng)頭,以便客戶端可以正確解析響應(yīng)內(nèi)容。
from flask import Flask, jsonify,request
import requests
from uuid import uuid4
from urllib.parse import urlparse

#  1******Building a Blockchain
class Blockchain:
    def __init__(self):
        self.transactions=[]
        self.chain=[]
        self.create_block(proof=1,previous_hash='0')
        self.nodes=set()
    
    def create_block(self,proof,previous_hash):
        block={'index':len(self.chain)+1,
               'timestamp':str(datetime.datetime.now()),
               'proof':proof,
               'previous_hash':previous_hash,
               'transactions':self.transactions}
        self.transactions=[]
        self.chain.append(block) 
        return block
    def get_previous_block(self):
        return self.chain[-1] 
    
    def proof_of_work(self,previous_proof):
        new_proof=1
        check_proof=False
        while check_proof is False:
            hash_oparation=hashlib.sha256(str(new_proof**2-previous_proof**2).encode()).hexdigest()
            if hash_oparation[:4]=='0000':
                check_proof=True
            else:
                new_proof+=1
        return new_proof
    
    def hash(self, block):
        encode_block = json.dumps(block, sort_keys=True).encode()
        return hashlib.sha256(encode_block).hexdigest()

    def is_chain_valid(self,chain):
        previous_block=chain[0]
        block_index=1
        while block_index<len(chain):
          block=chain[block_index]
          if block['previous_hash'] !=self.hash(previous_block):
              return False
          previous_proof=previous_block['proof']
          proof=block['proof']
          hash_oparation=hashlib.sha256(str(proof**2-previous_proof**2).encode()).hexdigest()
          if hash_oparation[:4] !='0000':
              return False
          previous_block=block
          block_index+=1
        return True
    
    def add_transaction(self,sender,receiver,amount):
        self.transactions.append({'sender':sender,
                                  'receiver':receiver,
                                  'amount':amount})
        previous_block=self.get_previous_block()
        return previous_block['index']+1
            
    def add_node(self,address):
        parsed_url=urlparse(address)
        self.nodes.add(parsed_url.netloc)
        
    def replace_chain(self):
        network = self.nodes
        longest_chain = None
        max_length = len(self.chain)
    
        for node in network:
            try:
                response = requests.get(f'http://{node}/get_chain')
                response.raise_for_status()  # 這將拋出異常,如果請求失敗
            except requests.exceptions.RequestException as e:
                print(f"Failed to get the chain from {node}. Exception: {e}")
                continue
    
            if response.status_code == 200:
                length = response.json()['length']
                chain = response.json()['chain']
                if length > max_length and self.is_chain_valid(chain):
                    max_length = length
                    longest_chain = chain
    
        if longest_chain:
            self.chain = longest_chain
            return True
        return False
#Part 2 -Mining our Blockchain

#Creating a Web App
app = Flask(__name__)

#Creating an address for the node on Port 5000
node_address=str(uuid4()).replace('-', '')

#Creating a Blockchain
blockchain=Blockchain()
#Mining a new block
@app.route('/mine_block',methods=['GET'])
def mine_block():
    previous_block=blockchain.get_previous_block()
    previous_proof=previous_block['proof']
    proof=blockchain.proof_of_work(previous_proof)
    previous_hash=blockchain.hash(previous_block)
    blockchain.add_transaction(sender=node_address,receiver='a',amount=1)
    block=blockchain.create_block(proof, previous_hash)
    response={'message':'Congratulation,you just mined a block',
              'index':block['index'],
              'timestamp':block['timestamp'],
              'proof':block['proof'],
              'previous_hash':block['previous_hash'],
              'transactions':block['transactions']}
    return jsonify(response),200
            
#Getting the full Blockchain
@app.route('/get_chain',methods=['GET'])
def get_chain():
    response={'chain':blockchain.chain,
             'length':len(blockchain.chain)}
    return jsonify(response),200      
            
#Checking if the Blockchain is valid
@app.route('/is_valid',methods=['GET']) 
def get_valid():
    is_valid=blockchain.is_chain_valid(blockchain.chain)
    if is_valid:
        response={'message':'All good. The Blockchain is valid.'}
    else:
        response={'message':'Houston,we have a problem.The Blockchain is not valid.'}
    return jsonify(response),200

#Addling a new transaction to the Blockchain
@app.route('/add_transaction',methods=['POST']) 
def add_transaction():
    json =request.get_json()
    transaction_keys=['sender','receiver','amount']
    if not all(key in json for key in transaction_keys):
        return 'Some elements of the transaction are missing',400
    index=blockchain.add_transaction(json['sender'], json['receiver'],json['amount'])
    response={'message':f'This transaction will be added to Block {index}'}
    return jsonify(response),201

#Connecting new nodes
@app.route('/connect_node', methods=['POST'])
def connect_node():
    json = request.get_json()
    nodes = json.get('nodes')
    if nodes is None:
        return "No nodes provided", 400
    for node in nodes:
        blockchain.add_node(node)
    # 將響應(yīng)構(gòu)建移到循環(huán)外,并在所有節(jié)點(diǎn)添加后才返回
    response = {
        'message': 'All the nodes are now connected. The Lancoin Blockchain now contains the following nodes:',
        'total_nodes': list(blockchain.nodes)
    }
    return jsonify(response), 201
#Replacing the chain by the longest chain if needed
@app.route('/replace_chain', methods=['GET'])
def replace_chain():
    is_chain_replaced = blockchain.replace_chain()
    if is_chain_replaced:
        response = {
            'message': 'The nodes had different chains so the chain was replaced by the longest one.',
            'new_chain': blockchain.chain
        }
    else:
        response = {
            'message': 'All good. the chain is the largest one.',
            'actual_chain': blockchain.chain
        }
    return jsonify(response), 200   
        
app.run(host='0.0.0.0',port=5001)         
            

lancoin_node_5002.py、lancoin_node_5003.py則是lancoin_node_5001.py中的mine_block函數(shù)的blockchain.add_transaction(sender=node_address,receiver='a',amount=1),a改為b、c,然后app.run(host='0.0.0.0',port=5001)中的5001改為5002、5003


2、創(chuàng)建nodes.json文件

{
    "nodes":["http://127.0.0.1:5001",
             "http://127.0.0.1:5002",
             "http://127.0.0.1:5003"]
}

3、transaction.json文件

{
    "sender":"",
    "receiver":"",
    "amount":
}

4、打開三個控制臺

在這里我用的是Spyder編譯器,打開三個控制臺,分別在控制臺是運(yùn)行各節(jié)點(diǎn),控制臺1運(yùn)行5001節(jié)點(diǎn),控制臺2運(yùn)行5002節(jié)點(diǎn),控制臺3運(yùn)行5003節(jié)點(diǎn),如圖所示

創(chuàng)建一個區(qū)塊鏈,是由三個節(jié)點(diǎn)組成的去中心化網(wǎng)絡(luò)。,簡單的區(qū)塊鏈實(shí)現(xiàn),去中心化,區(qū)塊鏈,python,開發(fā)語言,后端,網(wǎng)絡(luò)


二、在三個節(jié)點(diǎn)上進(jìn)行交互。

(1)跳轉(zhuǎn)到postman,創(chuàng)建三個測試,分別對應(yīng)5001、5002、5003節(jié)點(diǎn)

創(chuàng)建一個區(qū)塊鏈,是由三個節(jié)點(diǎn)組成的去中心化網(wǎng)絡(luò)。,簡單的區(qū)塊鏈實(shí)現(xiàn),去中心化,區(qū)塊鏈,python,開發(fā)語言,后端,網(wǎng)絡(luò)


(2)獲取鏈來查看創(chuàng)世區(qū)塊是否創(chuàng)建良好http://127.0.0.1:5001/get_chain、http://127.0.0.1:5002/get_chain、http://127.0.0.1:5003/get_chain

以5001為例子

創(chuàng)建一個區(qū)塊鏈,是由三個節(jié)點(diǎn)組成的去中心化網(wǎng)絡(luò)。,簡單的區(qū)塊鏈實(shí)現(xiàn),去中心化,區(qū)塊鏈,python,開發(fā)語言,后端,網(wǎng)絡(luò)


(3)發(fā)出第一個請求(post),將發(fā)出我們的第一個發(fā)布請求以將節(jié)點(diǎn)相互連接。

我們現(xiàn)在想做的是連接節(jié)點(diǎn),因此我將返回到nodes.json文件,復(fù)制后返回postman發(fā)出請求,

按照圖內(nèi),將三個都按照圖上進(jìn)行相應(yīng)的修改

創(chuàng)建一個區(qū)塊鏈,是由三個節(jié)點(diǎn)組成的去中心化網(wǎng)絡(luò)。,簡單的區(qū)塊鏈實(shí)現(xiàn),去中心化,區(qū)塊鏈,python,開發(fā)語言,后端,網(wǎng)絡(luò)


(4)測試共識

首先在5001節(jié)點(diǎn)(也就是a)上挖一個塊

創(chuàng)建一個區(qū)塊鏈,是由三個節(jié)點(diǎn)組成的去中心化網(wǎng)絡(luò)。,簡單的區(qū)塊鏈實(shí)現(xiàn),去中心化,區(qū)塊鏈,python,開發(fā)語言,后端,網(wǎng)絡(luò)

可以通過獲取鏈請求(get_chain)來查看它,就會發(fā)現(xiàn)我的新鏈

創(chuàng)建一個區(qū)塊鏈,是由三個節(jié)點(diǎn)組成的去中心化網(wǎng)絡(luò)。,簡單的區(qū)塊鏈實(shí)現(xiàn),去中心化,區(qū)塊鏈,python,開發(fā)語言,后端,網(wǎng)絡(luò)

然后在5002節(jié)點(diǎn)上(也就是b)、5003節(jié)點(diǎn)(也就是a)選擇替換鏈請求。下面以5002為例子

創(chuàng)建一個區(qū)塊鏈,是由三個節(jié)點(diǎn)組成的去中心化網(wǎng)絡(luò)。,簡單的區(qū)塊鏈實(shí)現(xiàn),去中心化,區(qū)塊鏈,python,開發(fā)語言,后端,網(wǎng)絡(luò)


二、添加交易發(fā)布請求(a向b發(fā)送10000coin)

(1)先選擇post請求,點(diǎn)開transaction.json文件,復(fù)制以后回到postman,在5001節(jié)點(diǎn)上,如圖

創(chuàng)建一個區(qū)塊鏈,是由三個節(jié)點(diǎn)組成的去中心化網(wǎng)絡(luò)。,簡單的區(qū)塊鏈實(shí)現(xiàn),去中心化,區(qū)塊鏈,python,開發(fā)語言,后端,網(wǎng)絡(luò)


2)然后再5001界面get一個http://127.0.0.1:5001/mine_block。創(chuàng)建這個包含兩筆交易的新區(qū)塊,其中一筆交易與我剛剛開采了這個新區(qū)塊并因此給我一個addcoin有關(guān),當(dāng)然還有a給b的交易,給b10000coin


(3)查看5001是否開采區(qū)塊,3個區(qū)塊,如圖

創(chuàng)建一個區(qū)塊鏈,是由三個節(jié)點(diǎn)組成的去中心化網(wǎng)絡(luò)。,簡單的區(qū)塊鏈實(shí)現(xiàn),去中心化,區(qū)塊鏈,python,開發(fā)語言,后端,網(wǎng)絡(luò)


(4)查看5002的區(qū)塊,2個區(qū)塊

創(chuàng)建一個區(qū)塊鏈,是由三個節(jié)點(diǎn)組成的去中心化網(wǎng)絡(luò)。,簡單的區(qū)塊鏈實(shí)現(xiàn),去中心化,區(qū)塊鏈,python,開發(fā)語言,后端,網(wǎng)絡(luò)


(5)查看5003的區(qū)塊,2個區(qū)塊

創(chuàng)建一個區(qū)塊鏈,是由三個節(jié)點(diǎn)組成的去中心化網(wǎng)絡(luò)。,簡單的區(qū)塊鏈實(shí)現(xiàn),去中心化,區(qū)塊鏈,python,開發(fā)語言,后端,網(wǎng)絡(luò)


(6)達(dá)成共識,以確保區(qū)塊鏈中的每個節(jié)點(diǎn)都具有相同的鏈。在postman的5002節(jié)點(diǎn)界面再運(yùn)行一遍http://127.0.0.1:5002/replace_chain(get),然后在5003節(jié)點(diǎn)界面運(yùn)行http://127.0.0.1:5003/replace_chain,然后5002、5003節(jié)點(diǎn)也會有3個節(jié)點(diǎn)

創(chuàng)建一個區(qū)塊鏈,是由三個節(jié)點(diǎn)組成的去中心化網(wǎng)絡(luò)。,簡單的區(qū)塊鏈實(shí)現(xiàn),去中心化,區(qū)塊鏈,python,開發(fā)語言,后端,網(wǎng)絡(luò)

創(chuàng)建一個區(qū)塊鏈,是由三個節(jié)點(diǎn)組成的去中心化網(wǎng)絡(luò)。,簡單的區(qū)塊鏈實(shí)現(xiàn),去中心化,區(qū)塊鏈,python,開發(fā)語言,后端,網(wǎng)絡(luò)


(7)最后在三個節(jié)點(diǎn)中分別get請求一下get_chain,以檢查是否具有相同的鏈。以5002為例

創(chuàng)建一個區(qū)塊鏈,是由三個節(jié)點(diǎn)組成的去中心化網(wǎng)絡(luò)。,簡單的區(qū)塊鏈實(shí)現(xiàn),去中心化,區(qū)塊鏈,python,開發(fā)語言,后端,網(wǎng)絡(luò)


注:本篇用的代碼解釋都可在我以往的文章中找到

“創(chuàng)建一個簡單的區(qū)塊鏈,并使用 Flask 框架提供一個簡單的 Web 接口來與區(qū)塊鏈交互。(持續(xù)更新)-CSDN博客”

“使用了Python語言和Flask框架。創(chuàng)建一個區(qū)塊鏈網(wǎng)絡(luò),允許用戶通過HTTP請求進(jìn)行交互,如包括創(chuàng)建區(qū)塊鏈、挖礦、驗(yàn)證區(qū)塊鏈等功能。-CSDN博客”

“使用Python,結(jié)合Flask框架,創(chuàng)建一個可以處理交易、挖礦新區(qū)塊、驗(yàn)證區(qū)塊鏈有效性,并能在網(wǎng)絡(luò)節(jié)點(diǎn)間同步的區(qū)塊鏈網(wǎng)絡(luò)。(持續(xù)更新)-CSDN博客”文章來源地址http://www.zghlxwxcb.cn/news/detail-861777.html

到了這里,關(guān)于創(chuàng)建一個區(qū)塊鏈,是由三個節(jié)點(diǎn)組成的去中心化網(wǎng)絡(luò)。的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • CESS 成功申請 IEEE 最新標(biāo)準(zhǔn) P3233 — — 《基于區(qū)塊鏈的去中心化存儲協(xié)議規(guī)范》

    CESS 成功申請 IEEE 最新標(biāo)準(zhǔn) P3233 — — 《基于區(qū)塊鏈的去中心化存儲協(xié)議規(guī)范》

    我們很榮幸地向大家宣布,IEEE(電氣電子工程師學(xué)會,Institute of Electrical and Electronics Engineers)標(biāo)準(zhǔn)組織批準(zhǔn)了 CESS 請求的標(biāo)準(zhǔn)號為 P3233,名為《Standard for Blockchain-Based Decentralized Storage Protocol Specification 》(基于區(qū)塊鏈的去中心化存儲協(xié)議規(guī)范)的行業(yè)標(biāo)準(zhǔn)提案。這一標(biāo)準(zhǔn)的

    2024年03月12日
    瀏覽(35)
  • 區(qū)塊鏈的去中心化賬本有和意義?為什么要哈希運(yùn)算?如何保證數(shù)據(jù)不可篡改?

    區(qū)塊鏈的去中心化賬本有和意義?為什么要哈希運(yùn)算?如何保證數(shù)據(jù)不可篡改?

    1、中心化賬本是什么? 在互聯(lián)網(wǎng)的世界里,價值是用數(shù)字來呈現(xiàn)的。而數(shù)字文件是可以無限復(fù)制的,在互聯(lián)網(wǎng)的世界數(shù)字具有易錯、易改、易拷貝的特性,但是價值是不能復(fù)制的。為了解決這一難題發(fā)展為由一個中心化的機(jī)構(gòu)(支付寶/微信支付/銀聯(lián)等)負(fù)責(zé)記賬和記錄賬戶余

    2023年04月23日
    瀏覽(36)
  • 【W(wǎng)eb3】什么是Web3?一個新的去中心化網(wǎng)絡(luò),或是最新的營銷流行語

    【W(wǎng)eb3】什么是Web3?一個新的去中心化網(wǎng)絡(luò),或是最新的營銷流行語

    Web3已成為一種將區(qū)塊鏈、智能合約和去中心化應(yīng)用程序結(jié)合在一起的嘗試,但其真正的功效難以確定。 Web3,如Web3基金會設(shè)想的那樣,將是一個公共互聯(lián)網(wǎng),數(shù)據(jù)和內(nèi)容被注冊在塊鏈上,在對等分布式網(wǎng)絡(luò)上進(jìn)行令牌化或管理和訪問。 Web3有望成為一個去中心化的、不可變的

    2024年01月21日
    瀏覽(24)
  • 了解區(qū)塊鏈---一個去中心化技術(shù)

    1.假如你是從事區(qū)塊鏈的高端技術(shù)人員,我從來沒有接觸過區(qū)塊鏈,請你為我講解下他的概率、原理、應(yīng)用? 概念: 區(qū)塊鏈?zhǔn)且环N 去中心化 的 分布式賬本技術(shù) ,它是由一系列 區(qū)塊 組成的 鏈?zhǔn)浇Y(jié)構(gòu) ,每個 區(qū)塊包含一些交易數(shù)據(jù) ,并且通過 密碼學(xué)算法 與之前的區(qū)塊鏈接在

    2024年02月16日
    瀏覽(27)
  • Web3下的去中心化契約

    Web3下的去中心化契約

    隨著Web3的興起,智能合約成為了這一新興領(lǐng)域中最為重要的概念之一。智能合約是一種在區(qū)塊鏈上執(zhí)行的可編程代碼,其作用類似于傳統(tǒng)世界中的合約,但具有更多的靈活性和安全性。本文將介紹智能合約的基本概念、工作原理以及在Web3下的應(yīng)用場景。 一、智能合約的概念

    2024年02月09日
    瀏覽(20)
  • 構(gòu)建高可用的去中心化微服務(wù)集群架構(gòu)指南

    構(gòu)建高可用的去中心化微服務(wù)集群架構(gòu)指南

    隨著云計算、大數(shù)據(jù)和物聯(lián)網(wǎng)的快速發(fā)展,企業(yè)對于可擴(kuò)展的、高性能的微服務(wù)架構(gòu)的需求也日益增長。傳統(tǒng)的集中式架構(gòu)已經(jīng)不能滿足這些需求,因此出現(xiàn)了去中心化的微服務(wù)集群架構(gòu)。本文將介紹如何構(gòu)建高可用的去中心化微服務(wù)集群架構(gòu),以滿足企業(yè)的 高性能 和 可擴(kuò)

    2024年02月12日
    瀏覽(24)
  • Solidity中的去中心化金融(DeFi)應(yīng)用開發(fā)

    去中心化金融(Decentralized Finance,DeFi)是基于區(qū)塊鏈技術(shù)的一種新型金融模式,它通過智能合約和去中心化應(yīng)用程序(DApps)實(shí)現(xiàn)了傳統(tǒng)金融中的各種功能,如借貸、交易、存款和投資,而無需依賴傳統(tǒng)金融機(jī)構(gòu)。Solidity是一種專為以太坊平臺設(shè)計的智能合約編程語言,它成

    2024年02月09日
    瀏覽(23)
  • 基于ERC20代幣協(xié)議實(shí)現(xiàn)的去中心化應(yīng)用平臺

    基于ERC20代幣協(xié)議實(shí)現(xiàn)的去中心化應(yīng)用平臺

    使用 solidity 實(shí)現(xiàn)的基于 ERC20 代幣協(xié)議的借貸款去中心化應(yīng)用平臺(極簡版)。實(shí)現(xiàn)存款、取款、貸款、還款以及利息計算的功能。 平臺提供ERC20協(xié)議代幣的相關(guān)存取和利息計算工作。部署智能合約時初始化貸款和存款的年利率、代幣實(shí)現(xiàn)地址。 用戶可以將手中的代幣存入平臺

    2024年02月04日
    瀏覽(20)
  • 什么是 Web 3.0:面向未來的去中心化互聯(lián)網(wǎng)

    什么是 Web 3.0:面向未來的去中心化互聯(lián)網(wǎng)

    Web 3.0 可能是基于公共區(qū)塊鏈的未來互聯(lián)網(wǎng)模式,公共區(qū)塊鏈?zhǔn)且环N用以促進(jìn)加密貨幣交易的記錄保存系統(tǒng)。 Web 3.0 的最重要的地方在于它是去中心化的,這意味著用戶不是通過騰訊、阿里、百度、字節(jié)、谷歌、蘋果等公司提供的服務(wù)訪問互聯(lián)網(wǎng),而是個人自己擁有和管理互

    2024年01月21日
    瀏覽(22)
  • 水庫大壩安全監(jiān)測系統(tǒng)是由什么組成的?

    水庫大壩安全監(jiān)測系統(tǒng)是由什么組成的?

    水庫大壩是防洪抗災(zāi)的重要設(shè)施,它們的安全性直接關(guān)系到人民群眾的生命財產(chǎn)安全。因此,水庫大壩的安全監(jiān)測必不可少。水庫大壩安全監(jiān)測系統(tǒng)是一種集成了數(shù)據(jù)采集、傳輸、處理和分析的技術(shù)平臺,能夠?qū)崟r、準(zhǔn)確地監(jiān)測大壩的狀態(tài),及時發(fā)現(xiàn)異常情況,提供科學(xué)的依

    2024年02月16日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包