日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 物聯(lián)網(wǎng) > 區(qū)塊鏈
[導(dǎo)讀] 近期有個(gè)國(guó)內(nèi)著名技術(shù)協(xié)會(huì)的約稿,正好向技術(shù)圈分享一下我對(duì)區(qū)塊鏈系統(tǒng)的拙見。我發(fā)現(xiàn)一件有趣的事情,即使是有計(jì)算機(jī)背景,懂編程的同學(xué),都也不怎么清楚區(qū)塊鏈到底是怎么回事。今天這里,我打算用計(jì)算機(jī)語言

近期有個(gè)國(guó)內(nèi)著名技術(shù)協(xié)會(huì)的約稿,正好向技術(shù)圈分享一下我對(duì)區(qū)塊鏈系統(tǒng)的拙見。我發(fā)現(xiàn)一件有趣的事情,即使是有計(jì)算機(jī)背景,懂編程的同學(xué),都也不怎么清楚區(qū)塊鏈到底是怎么回事。今天這里,我打算用計(jì)算機(jī)語言和大家溝通,爭(zhēng)取可以至少讓計(jì)算機(jī)背景的同學(xué),徹底弄明白區(qū)塊鏈?zhǔn)钦厥?,是怎么工作的?/p>

不過在開始之前,需要明確的一件事情是,同之前的計(jì)算機(jī)技術(shù)不同,區(qū)塊鏈技術(shù)核心關(guān)乎的是一個(gè)計(jì)算系統(tǒng)的自動(dòng)化監(jiān)管和治理,而不是為了讓計(jì)算更高效或更大規(guī)模地發(fā)生。需要明確這個(gè)期望,才方便我們?nèi)ダ斫?,為什么區(qū)塊鏈?zhǔn)沁@樣設(shè)計(jì)的,這樣工作的。

偽代碼雜糅了C++Javascript的語法,一點(diǎn)亂,歡迎大家來改進(jìn) (逃 。。.

================= 預(yù)警分割線 ==============

好吧,這里開始,前方高能。

我們將以最簡(jiǎn)化的加密數(shù)字貨幣為例介紹區(qū)塊鏈的精確工作原理,為了便于理解將省略手續(xù)費(fèi),大部分優(yōu)化,互操作性等層面的東西。這里會(huì)用到強(qiáng)類型的偽代碼,來精確定義其數(shù)據(jù)結(jié)構(gòu)和執(zhí)行邏輯。這里我們將從零開始實(shí)現(xiàn)一個(gè)類似以太坊數(shù)字貨幣那樣的區(qū)塊鏈系統(tǒng),為了便于理解,我們將采用以太坊所采用的賬戶-狀態(tài)模型來表示賬簿,而不是比特幣的那種UTXO。

我們先從一系列基礎(chǔ)實(shí)體和原語的定義開始:

基礎(chǔ)數(shù)據(jù)類型

class String; // 基礎(chǔ)字符串?dāng)?shù)據(jù)結(jié)構(gòu)

class Blob; // 基礎(chǔ)二進(jìn)制數(shù)據(jù),用來表示對(duì)象序列化之后的線性二進(jìn)制數(shù)據(jù)

class CriticalSecTIon; // 臨界區(qū),多線程互斥對(duì)象

class BigInt; // 區(qū)塊鏈中很多地方的數(shù)值采用大整數(shù)來表示,例如余額,挖礦難度等。

// 例如用一個(gè)32字節(jié)的無符號(hào)大整數(shù),表示0到2^256-1的整數(shù)。

數(shù)字簽名原語

標(biāo)準(zhǔn)的非對(duì)稱加密系統(tǒng)里面的函數(shù),公私鑰對(duì)可以在不聯(lián)網(wǎng)的情況下,任意生成,并且全球唯一。通常為32到64字節(jié)的無結(jié)構(gòu)二進(jìn)制數(shù)據(jù)。其中公鑰會(huì)公開,在區(qū)塊鏈系統(tǒng)中用來表明特定身份,供他人驗(yàn)證其對(duì)特定賬戶的控制權(quán)。而私鑰則用來通過數(shù)字簽名來證明其對(duì)賬戶的控制。VerifySignature原語,用來對(duì)于給定數(shù)據(jù)和簽名,驗(yàn)證是不是對(duì)應(yīng)的簽名者簽署的。

typedef BYTE PublicKey[32]; //公鑰數(shù)據(jù)

typedef BYTE PrivateKey[64];//私鑰數(shù)據(jù)

typedef BYTE Signature[64]; //數(shù)字簽名數(shù)據(jù)

void Sign(Blob data, PrivateKey sk, Signature sigdata); //數(shù)字簽名

bool VerifySignature(Blob data, PublicKey pk, Signature sigdata); //檢查數(shù)字簽名是否正確

賬戶地址

在我們這里的例子中,所有哈希函數(shù)都采用SHA256,其將產(chǎn)生一個(gè)32字節(jié)的哈希值。地址是賬戶的標(biāo)識(shí)符,是一個(gè)32字節(jié)的無結(jié)構(gòu)二進(jìn)制數(shù)據(jù),由公鑰的哈希值 SHA256(PublicKey) 得到。那么也就是說每個(gè)公鑰,對(duì)應(yīng)一個(gè)唯一的地址,對(duì)應(yīng)一個(gè)唯一的賬戶。

typedef BYTE HashValue[32]; //SHA256的哈希值

typedef HashValue Address; //賬戶地址

HashValue SHA256(Blob data); // SHA256 哈希函數(shù)

智能合約 (Smart Contract)

這個(gè)有點(diǎn)像一個(gè) C++的類,定義了一些狀態(tài),以及修改這些狀態(tài)的函數(shù)。一個(gè)區(qū)塊鏈系統(tǒng)中,可以有多個(gè)智能合約同時(shí)存在,但是每個(gè)僅會(huì)有一個(gè)實(shí)例。這里我們就數(shù)字貨幣給出一個(gè)極度簡(jiǎn)化的智能合約的例子:

class MyCoin

{

// internal state

hash_map《Address, BigInt》 _Ledger;

// internal funcTIon

BigInt _GetBalance(Address addr)

{

if(_Ledger.has(addr))return _Ledger[addr];

else return 0;

}

// 轉(zhuǎn)賬函數(shù)

void Transfer(Address signer, Address from, Address to, BigInt amount)

{

if(signer != from)return;

if(amount 》 0 && _GetBalance(from) 》= amount)

{

_Ledger[from] -= amount;

amount += _GetBalance(to);

_Ledger[to] = amount;

}

}

// 挖礦獎(jiǎng)勵(lì)函數(shù)

void CoinBase(int height, Address miner)

{

BigInt reward = 5000000000; // 這里簡(jiǎn)化為,每次獎(jiǎng)勵(lì)50個(gè)幣

if(reward 》 0)

{

reward += _GetBalance(miner);

_Ledger[miner] = reward;

}

}

};

交易 (TransacTIon)

一個(gè)交易表示對(duì)特定相關(guān)賬戶一次狀態(tài)修改請(qǐng)求。交易中不攜帶任何邏輯代碼,僅僅是指定這個(gè)交易將調(diào)用智能合約里面的哪個(gè)公開函數(shù)及其調(diào)用參數(shù)。當(dāng)然在我們這個(gè)極度簡(jiǎn)化的系統(tǒng)中,只有一種交易,即前面的轉(zhuǎn)賬(Transfer)。交易的發(fā)起方必須為扣款方(from),并且整個(gè)交易攜帶對(duì)交易內(nèi)容的數(shù)字簽名,以確信該交易由扣款方發(fā)起?;谖覀冞@里的例子,一個(gè)交易至少含有以下結(jié)構(gòu):

struct TransacTIon

{

String InvokeFunctionName; // 在我們這里 始終為 “Transfer”

Blob InvokeArguments; // 序列化之后的調(diào)用參數(shù)

PublicKey Signer; // 發(fā)起者的公鑰,注意這里不是地址

Signature SignData; // 由發(fā)起者的私鑰對(duì)交易的簽名

};

區(qū)塊 (Block)

一個(gè)區(qū)塊表示區(qū)塊鏈接力執(zhí)行中的一步,里面主要包含這一步中確認(rèn)的一批交易,以及共識(shí)機(jī)制驗(yàn)證數(shù)據(jù)和塊頭元數(shù)據(jù)。一個(gè)最簡(jiǎn)化的定義可以是這樣:

struct Block

{

int Timestamp; // 出塊時(shí)間

HashValue PrevBlock; // 上一個(gè)塊的哈希值

Address Miner; // 礦工地址

int TxnCount; // 這個(gè)塊中包含的交易個(gè)數(shù)

Transaction Txns[TxnCount]; // 完整的交易列表

BigInt PowTarget; // 工作量證明的目標(biāo) (共識(shí)驗(yàn)證數(shù)據(jù))

int PowNonce; // 工作量證明的Nonce值 (共識(shí)驗(yàn)證數(shù)據(jù))

};

這里我們給出了最簡(jiǎn)化的工作量證明(Proof-of-Work)的驗(yàn)證數(shù)據(jù)結(jié)構(gòu),如果采用其他共識(shí)算法,這個(gè)部分會(huì)有變化。從這個(gè)結(jié)構(gòu)可以看出,區(qū)塊鏈之所以稱為鏈,就是因?yàn)閰^(qū)塊結(jié)構(gòu)中包含一個(gè)指向上一個(gè)區(qū)塊的“指針”,PrevBlock。任何一個(gè)被確認(rèn)的區(qū)塊,同時(shí)也意味著承認(rèn)其全部的前驅(qū)區(qū)塊,以及這些區(qū)塊所攜帶的全部交易。一個(gè)區(qū)塊被確認(rèn)有三個(gè)條件:

1. 這個(gè)區(qū)塊的共識(shí)驗(yàn)證要滿足其特定共識(shí)算法的要求。在工作量證明算法中,PowTarget必須小于當(dāng)前挖礦難度的要求,同時(shí) ((BigInt&)SHA256(Block)) 《 Block::PowTarget。

2. 這個(gè)塊所包含的交易必須沒有被之前的區(qū)塊包含過,并且每個(gè)交易必須能夠保證其數(shù)字簽名能夠被其Signer的公鑰正確驗(yàn)證。至于交易所執(zhí)行的邏輯是否正確,是否出錯(cuò)則無關(guān)緊要。

3. 在所有分叉塊中,即具有相同PrevBlock的塊,只有優(yōu)先的塊會(huì)被確認(rèn)。這一點(diǎn)不同的共識(shí)算法有不同的情況。

P2P通訊原語

區(qū)塊鏈的網(wǎng)絡(luò)層僅用到了P2P網(wǎng)絡(luò)技術(shù)中簡(jiǎn)單的部分,用基于TCP長(zhǎng)連接的Gossip協(xié)議實(shí)現(xiàn)一個(gè)數(shù)據(jù)塊的全網(wǎng)廣播(Flooding)。我們這里將其抽象下面的通訊原語:

interface BroadcastNetwork

{

template《typename T》

void Broadcast(const T& object); // 將對(duì)象序列化并廣播出去

function OnRecvBlock; // 接收到一個(gè)區(qū)塊的回調(diào)函數(shù)

function OnRecvTransaction; // 接收到一個(gè)交易的回調(diào)函數(shù)

};

內(nèi)存池(Mempool)原語

內(nèi)存池在區(qū)塊鏈系統(tǒng)中用來記錄尚未被確認(rèn)的交易,很容易用比如哈希表來實(shí)現(xiàn)。

interface Mempool

{

bool Has(Transaction txn);

void Insert(Transaction new_txn);

void Remove(Transaction txns[count]);

int Collect(Transaction txns[max_count]);

};

其中Collect原語用于挖礦時(shí)合成新的區(qū)塊,從mempool中挑出一系列交易來填充Txns數(shù)組,最多挑TxnMaxCount個(gè),并返回實(shí)際填充的個(gè)數(shù)。

區(qū)塊歸檔數(shù)據(jù)庫原語

區(qū)塊鏈系統(tǒng)中的區(qū)塊以及交易,在被確認(rèn)之后,將從內(nèi)存中移除,并寫入歸檔數(shù)據(jù)庫中。這個(gè)部分很容易用一個(gè)Key-value storage系統(tǒng)來實(shí)現(xiàn),當(dāng)然用SQL數(shù)據(jù)可也是可以的,就是效率低一些。

interface ArchiveDatabase

{

void Archive(Transactiontxns[count]);

void Archive(Block blk);

void Has(Transaction txn);

void Has(Block blk);

}

有了這些定義之后,我們可以給出一個(gè)不考慮分叉情況下最簡(jiǎn)單的基于工作量證明的區(qū)塊鏈系統(tǒng)的偽代碼:

static const int TARGET_ADJUST_INTERVAL = 256; // 每隔256個(gè)塊調(diào)整一次算力難度

static const int BLOCK_CREATION_INTERVAL = 600*1000; //每十分鐘出一個(gè)塊

static const int TRANSCATION_PERBLOCK_MAX = 1024; // 每塊最多包含1024個(gè)交易

BroadcastNetwork* g_pNet = BroadcastNetwork::Create(。。.);

Mempool* g_pMempool = Mempool::Create(。。.);

ArchiveDatabase* g_pArchiDB = ArchiveDatabase::Create(。。.);

MyCoin g_MyLedger; // 賬簿

// 當(dāng)前區(qū)塊鏈的頭

Block g_BlockHead = Block::GenesisBlock(6); // 初始化為創(chuàng)始區(qū)塊

HashValue g_BlockHeadHash = SHA256(g_BlockHead);

int g_BlockNextHeight = 1;

CriticalSection g_BlockHeadCS;

// 下一個(gè)塊的共識(shí)相關(guān)信息 (工作量證明)

PowTarget g_NextPowTarget = Block::InitialPowTarget(); // 初始挖礦難度

int g_LastTargetAdjustedTime;

// 收到來自網(wǎng)絡(luò)廣播的交易

g_pNet-》 OnRecvTransaction = [](Transaction txn) {

if(g_pMempool-》Has(txn) || g_pArchiDB-》Has(txn))

return; // 忽略已經(jīng)存在的交易

if(!VerifySignature(

txn.InvokeFunctionName + txn.InvokeArguments +txn.Signer,

txn.Signer,

txn.Signature

)return;// 驗(yàn)證簽名是否正確

g_pNet-》Broadcast(txn); // 基本驗(yàn)證合法之后,接力這個(gè)交易的廣播

g_pMempool-》Insert(txn);

};

// 收到來自網(wǎng)絡(luò)廣播的區(qū)塊

g_pNet-》 OnRecvBlock = [](Block blk) {

if(blk.PrevBlock != g_BlockHeadHash)

return; // 忽略亂序到達(dá)的塊,忽略分叉塊

if(blk.PowTarget 》 g_NextPowTarget)

return; // 忽略不滿足當(dāng)前算力要求的塊

if(blk.TxnCount 》 TRANSCATION_PERBLOCK_MAX)

return; // 忽略過于大的塊

HashValue h = SHA256(blk);

if( ((BigInt&)h) 》= blk.PowTarget )

return; // 忽略未達(dá)到當(dāng)前標(biāo)稱算力要求的塊

// 校驗(yàn)全部塊中的交易

for(Int32 i=0; i《blk.TxnsCount; i++)

{

auto& txn = blk.Txns[i];

if( g_pArchiDB-》Has(txn) || // 包含之前已經(jīng)被確認(rèn)過的交易

!VerifySignature(

txn.InvokeFunctionName + txn.InvokeArguments +txn.Signer,

txn.Signer,

txn.Signature

) // 包含驗(yàn)簽失敗的交易

)return;

}

// 至此這個(gè)區(qū)塊被確認(rèn)

g_pNet-》Broadcast(txn); // 確認(rèn)之后,盡快接力這個(gè)區(qū)塊的廣播

g_MyLedger.CoinBase(g_BlockNextHeight, Miner); // 執(zhí)行出塊獎(jiǎng)勵(lì)

for(auto& txn : blk.Txns) // 執(zhí)行每一條交易,然后歸檔

{

// 調(diào)用交易中指定的函數(shù)

g_MyLedger[txn.InvokeFunctionName](txn.Signer, txn.InvokeArguments…);

g_pArchiDB-》Archive(txn);

g_pMempool-》Remove(txn); // 從內(nèi)存池中刪除,如果存在的話

}

g_pArchiDB-》Archive(g_BlockHead); // 歸檔上一個(gè)區(qū)塊

// 更新區(qū)塊鏈頭,這部分代碼需要和挖礦過程中構(gòu)造新的塊的步驟互斥

g_BlockHeadCS.Lock();

{

if(g_BlockNextHeight%TARGET_ADJUST_INTERVAL == 1)

{// 進(jìn)行算力調(diào)整,周期為 TARGET_ADJUST_INTERVAL 個(gè)區(qū)塊

if(g_BlockNextHeight 》 1)

{ g_NextPowTarget = PowTargetAdjustment(

g_NextPowTarget,

blk.Timestamp - g_LastTargetAdjustedTime

);

}

g_LastTargetAdjustedTime = blk.Timestamp;

}

// 更新區(qū)塊鏈頭在最新的這個(gè)塊

g_BlockHeadHash = h;

g_BlockHead = blk;

g_BlockNextHeight++;

}

g_BlockHeadCS.Unlock();

};

這里涉及到一個(gè)上面沒有定義的算法,PowTargetAdjustment是用來根據(jù)近期出塊速度來調(diào)整出塊算力難度要求,從而使得出塊的平均間隔的期望可以大體穩(wěn)定在一個(gè)預(yù)先設(shè)定的值(BLOCK_CREATION_INTERVAL)。這是一個(gè)和工作量證明共識(shí)算法有關(guān)的算法,并不是所有區(qū)塊鏈系統(tǒng)都有。這個(gè)算法的一個(gè)最簡(jiǎn)化定義如下:

算力難度調(diào)整

BigInt PowTargetAdjustment(BigInt cur_target, int nth_block_interval)

{

return cur_target*nth_block_interval/(BLOCK_CREATION_INTERVAL*TARGET_ADJUST_INTERVAL);

}

到這里一個(gè)不出塊的區(qū)塊鏈節(jié)點(diǎn),即全節(jié)點(diǎn)就可以工作了。全節(jié)點(diǎn)是區(qū)塊鏈網(wǎng)絡(luò)中的大多數(shù)節(jié)點(diǎn),是區(qū)塊鏈底層P2P網(wǎng)絡(luò)得以穩(wěn)定魯棒運(yùn)行的保障,同時(shí)也實(shí)現(xiàn)了區(qū)塊數(shù)據(jù)和交易數(shù)據(jù)的高度冗余的全網(wǎng)存儲(chǔ)。雖然不出塊,全節(jié)點(diǎn)不同于互聯(lián)網(wǎng)架構(gòu)的客戶端。一個(gè)全節(jié)點(diǎn)不需要信賴其他節(jié)點(diǎn),更不存在一個(gè)服務(wù)器。全節(jié)點(diǎn)能夠獨(dú)立自主地驗(yàn)證區(qū)塊鏈完整的歷史演進(jìn)過程,進(jìn)而重構(gòu)其上的狀態(tài) (例如一個(gè)賬戶的余額),而不是去向一個(gè)需要信賴的服務(wù)器查詢。

當(dāng)然,區(qū)塊鏈網(wǎng)絡(luò)計(jì)算接力過程是由出塊節(jié)點(diǎn)完成了,也就是所謂的礦工節(jié)點(diǎn)。這些少數(shù)節(jié)點(diǎn),和大量的全節(jié)點(diǎn)混在一起,大部分節(jié)點(diǎn)收到最新的區(qū)塊是來自于其他全節(jié)點(diǎn)的接力廣播,而不是直接來自于一個(gè)出塊節(jié)點(diǎn)。當(dāng)然,作為接受方,也無從判斷發(fā)送方是中繼的全節(jié)點(diǎn),還是剛剛出塊的礦工節(jié)點(diǎn)。這也有效地保護(hù)了真正出塊節(jié)點(diǎn)的安全性,避免暴露礦工節(jié)點(diǎn)的物理IP地址。

一個(gè)出塊節(jié)點(diǎn),首先是一個(gè)全節(jié)點(diǎn),除了上面定義的這些行為之外,還需要一個(gè)額外的過程,運(yùn)行在一個(gè)或者多個(gè)線程上。我們定義最簡(jiǎn)化的出塊過程如下:

void Mining()

{

while(g_KeepMining)

{

// 構(gòu)造新的塊,這個(gè)部分需要和區(qū)塊鏈頭更新代碼互斥

g_BlockHeadCS.Lock();

{

int next_height = g_BlockNextHeight;

Block new_block;

new_block.Timestamp = os::GetCurrentTime();

new_block.PrevBlock = g_BlockHeadHash; // 指向最新的塊

new_block.Miner = g_MyAddress;

new_block.TxnCount = g_pMempool-》Collect(new_block.Txns[TRANSCATION_PERBLOCK_MAX]);

new_block.PowTarget = g_NextPowTarget;

new_block.PowNonce = os::Random《Int64》(); // 隨機(jī)初始值

}

g_BlockHeadCS.Unlock();

// 開始挖礦

while(next_height == g_BlockNextHeight)

{

if( ((BigInt64&)SHA256(new_block)) 《 new_block.PowTarget )

{

// 挖礦成功

g_pNet-》Broadcast(new_block); // 立即廣播出去

g_pNet-》OnRecvBlock(new_block); // 更新本節(jié)點(diǎn)的區(qū)塊鏈頭

break; // 開始去挖下一個(gè)塊

}

new_block.PowNonce++; // 嘗試下一個(gè)Nonce

}

// 大多數(shù)情況下,其他節(jié)點(diǎn)出了新的塊,并更新了區(qū)塊高度

// 則挖礦被打斷,去挖更新之后的下一個(gè)塊

}

}

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉