มาสร้าง Blockchain ของเราเองกันเถอะ ( 2 ) , Mining

Mining ( ขุด ) คือกระบวนการสร้าง block. ใหม่ แล้วเพิ่มเข้าไปใน blockchain

มีขั้นตอนการทำงานดังต่อไปนี้

const nonce = bitcoin.proofOfWork(previousBlockHash, currentBlockData);
const blockHash = bitcoin.hashBlock(previousBlockHash, currentBlockData, nonce);
const newBlock = bitcoin.createNewBlock(nonce, previousBlockHash, blockHash);

เรามาดู code ของ function เหล่านี้กันดีกว่า

Blockchain.prototype.createNewBlock = function(nonce, previousBlockHash, hash) {
	const newBlock = {
		index: this.chain.length + 1,
		timestamp: Date.now(),
		transactions: this.pendingTransactions,
		nonce: nonce,
		hash: hash,
		previousBlockHash: previousBlockHash
	};

	this.pendingTransactions = [];
	this.chain.push(newBlock);

	return newBlock;
};
Blockchain.prototype.hashBlock = function(previousBlockHash, currentBlockData, nonce) {
	const dataAsString = previousBlockHash + nonce.toString() + JSON.stringify(currentBlockData);
	const hash = sha256(dataAsString);
	return hash;
};


Blockchain.prototype.proofOfWork = function(previousBlockHash, currentBlockData) {
	let nonce = 0;
	let hash = this.hashBlock(previousBlockHash, currentBlockData, nonce);
	while (hash.substring(0, 4) !== '0000') {
		nonce++;
		hash = this.hashBlock(previousBlockHash, currentBlockData, nonce);
	}

	return nonce;
};

เราควรจะเริ่มดูที่ hashBlock function ซึ่งถูกเรียกใช้บ่อย function นี้ไม่มีอะไรซับซ้อนมาก แค่ทำการ hash ค่าของ previousBlockHash + nonce + currentBlockData ด้วย sha256

proofOfWork function คือการหา hash ที่ขึ้นต้นด้วย 0000 ให้เจอ เราจะเห็นว่า nonce คือตัวแปรที่เพิ่มค่าไปเรื่อยๆ ใน while loop เมื่อเราเจอ nonce ที่ถูกต้องแล้ว function ก็จะ return

const nonce = bitcoin.proofOfWork(previousBlockHash, currentBlockData);
const blockHash = bitcoin.hashBlock(previousBlockHash, currentBlockData, nonce);
const newBlock = bitcoin.createNewBlock(nonce, previousBlockHash, blockHash);

กลับมาดู code ที่พูดในตอนแรกจะเห็นได้ว่า createNewBlock เพียงแค่รับ parameter ที่ได้จาก output ของ proofOfWork และ hashBlock

มาสร้าง Blockchain ของเราเองกันเถอะ ( 1 )

Blockchain คือ การบันทึกข้อมูล ที่ยากในการแก้ไข ( แทบจะเป็นไปไม่ได้ ) ที่จะเปลี่ยนแปลงข้อมูล, hack ระบบ, หรือโกงได้

องค์ประกอบของ blockchain จะประกอบด้วย Block ซึ่งเป็นที่เก็บข้อมูลที่เราต้องการบันทึก เมื่อมี block ใหม่เข้ามา ก็จะทำการไปต่อท้ายเหมือนเป็นสายโซ่ ( chain ) เราเลยเรียกว่า Blockchain แต่การที่จะเพิ่ม block เข้าไปใหม่ใน blockchain network จะมีขั้นตอนที่เรียกว่า proof of work ( การสร้าง hash key ที่ตรงตามเงื่อนไขที่เรากำหนดไว้ เราอาจจะรู้จักขั้นตอนนี้ว่า "ขุด" mine )

Continue reading "มาสร้าง Blockchain ของเราเองกันเถอะ ( 1 )"

decentralized network system คืออะไร ?

เราอาจจะเคยได้ยิน Bitcoin หรือพวก cryptocurrency ต่างๆ ที่ทำงานอยู่บน Blockchain ที่ทำงานบน decentralize network ก่อนที่เราจะทำความเข้าใจในรายละเอียดของ Blockchain และ decentralize network เราลองมาดู network ในรูปแบบต่างๆ 

Continue reading "decentralized network system คืออะไร ?"

Blockchain Technology จะช่วยแก้ปัญหาของชาวสวนและผู้บริโภคได้อย่างไร ?

ต้องบอกไว้ก่อนว่าผมไม่ใช่ชาวสวนมืออาชีพนะครับ แต่ว่าผมอยู่ที่จังหวัดจันทบุรี ผมพอได้ฟังปัญหาจากคนที่เป็นเจ้าของสวนหลายๆ คนที่ผมรู้จัก  และตัวผมเองก็เป็นคนที่ชอบทานผลไม้มาก ปัญหาที่ผมได้ยินมามีดังต่อไปนี้

Continue reading "Blockchain Technology จะช่วยแก้ปัญหาของชาวสวนและผู้บริโภคได้อย่างไร ?"

เครื่องวัดอัตราไหลของน้ำด้วย Arduino และ YF-S201 Hall Effect Water Flow Meter Sensor

Hall effect คือ ค่าความต่างศักย์  ( Voltage difference ) ( Hall Voltage ) ระหว่างสองฝั่งของตัวนำทางไฟฟ้า ( Electrical Conductor )   ที่กระแสไฟฟ้าวิ่งผ่าน โดยในขณะที่กระแสไฟฟ้าวิ่งผ่าน จะมีสนามแม่เหล็กตั้งฉากกับกระแสไฟฟ้า โดยปรากฎการณ์นี้ค้นพบโดย Edwin Hall  ในปี คศ. 1879

Continue reading "เครื่องวัดอัตราไหลของน้ำด้วย Arduino และ YF-S201 Hall Effect Water Flow Meter Sensor"

เราจะเข้าใจ code ของ project ที่มีความซับซ้อนได้อย่างไร ?

ในสมัยที่ผมเขียน code แรกๆ ผมเข้าใจว่าผมสามารถเข้าใจการทำงานของ program ทุกอย่างผ่านการอ่าน code เพียงอย่างเดียว ผมมีหนังสือหลายเล่มที่อยากแนะนำให้ programmer ลองอ่านดูนะครับ

Continue reading "เราจะเข้าใจ code ของ project ที่มีความซับซ้อนได้อย่างไร ?"

Photogrammetry และ Metaverse

วันนี้ผมลองศึกษาเกี่ยวกับ Metaverse ก็ได้นิยามว่า คือการสร้างโลกเสมือน ( virtual world ) 3D บน internet ขึ้นมา เพื่อให้ผู้ใช้งานระบบที่อยู่ในรูปแบบ Metaverse ได้เข้าไปมีตัวตนสมมติ ( avatar )ในโลกเสมือนนั้น 

Continue reading "Photogrammetry และ Metaverse"

ทำแอปประชุม online ด้วย Zoom SDK และ Ionic mobile framework

เมื่อสองสามวันก่อน มีลูกค้ารายหนึ่ง มาปรึกษาว่า เค้าต้องการจะใช้ Wowza Video streaming server มาทำเป็น Online conference แต่เนื่องจากเค้าทำอย่างไรก็ยัง delay อยู่ประมาณ 5 วินาที  แต่ความต้องการของลูกค้าเค้าอยากให้การตอบสนองเหมือน Zoom เลย 

Continue reading "ทำแอปประชุม online ด้วย Zoom SDK และ Ionic mobile framework"

Smart Factory หรือ Industry 4.0 คืออะไร ?

Smart Factory / Industry 4.0 เป็นแนวคิดที่เกี่ยวกับ การนำ Network  + Sensor + Machine learning technology มาใช้กับโรงงานอุตสาหกรรม  Sensor technology มีการพัฒนาไปมาก และราคาก็ถูกลงไปมาก การเชื่อมต่อข้อมูลกับเครื่องจักร ( Machine interface ) ที่ใช้ในอุตสาหกรรม ส่งข้อมูลผ่าน network ( ทั้งในรูปแบบ local network หรือ internet ) 

Continue reading "Smart Factory หรือ Industry 4.0 คืออะไร ?"

Live Sport Engagement Technology ช่วยเพิ่มประสบการณ์ของแฟนกีฬาได้อย่างไร

Live Sport Engagement Technology คือ technology ที่ช่วยให้การติดตามการถ่ายทอดสดกีฬาให้มีความสนุกสนานมากขึ้น และพยายามให้แฟนกีฬามีประสบการณ์ใกล้เคียงกับรับชมที่สนามการแข่งขันจริง

Continue reading "Live Sport Engagement Technology ช่วยเพิ่มประสบการณ์ของแฟนกีฬาได้อย่างไร"