Trang chủ Tạp chí Lập trình smart contracts: Phần 4 Bài toán thực tế

Lập trình smart contracts: Phần 4 Bài toán thực tế

Chúng ta cùng đi vào giải quyết bài toán thực tế, qua đó ta có thể thấy được ưu và nhược điểm của smart contracts trên nền Ethereum, cũng như nhìn cận cảnh quá trình phát triển một dApp thực sự.

Chọn chủ đề

Mình chọn chủ đề hợp đồng làm việc part time

Phân tích bài toán

Bài toán hợp đồng làm việc part time sẽ bao gồm những chức năng sau:

  • Tạo hợp đồng part time
  • Định ra khoảng thời gian để hợp đồng có hiệu lực
  • Giải quyết tranh chấp
  • Hiển thị các hợp đồng đang khả dụng
  • Kí kết các hợp đồng khả dụng
  • Thế chấp và chi trả hợp đồng
  • Xóa bỏ hợp đồng quá hạn
  • Đánh giá các cá nhân

Vấn đề được giải quyết khi áp dụng smart contracts và dApp:

  • Giảm thiểu chi phí vận hành
  • Đảm bảo hợp đồng luôn được thực thi như đã định
  • Thời gian của hợp đồng có thể trong vòng kéo dài trong 1 tiếng
  • Minh bạch và tạo ra market mở cho mọi cá nhân tham gia

Mô hình của hệ thống

Smart contracts

Phần màu xanh mô tả vể quá trình phát triển smart contracts:

  • Smart contract được viết bằng một ngôn ngữ phổ biến như Solidity (Viper).
  • Smart contract thông qua trình biên dịch solidity compiler (solc) được biên dịch thành operation code
  • Operation code được deploy vào blockchain của Ethereum tại một logical address.

Phần màu cam mô tả front-end của dApp:

  • Private key & public key sẽ lưu trữ ở phía client side, điều này khác biệt hoàn với các application truyền thống, khi mà phần quan trọng nhất lại không nắm bởi third party
  • GUI có thể được xây dựng bằng bất cứ thứ gì, thuận tiện với developer. Trong ví dụ này mình chọn Web UI (HTML/CSS/JS).
  • Users sẽ tương tác với smart contracts thông qua Web UI. Và Web UI còn hiển thị dữ liệu của smart contracts.
  • Mỗi lần trigger methodscủa smart contract thông qua Web UI sẽ tiêu tốn Ethereum.

Tiến hành

Mình thực hiện lệnh truffle init để tạo khởi tạo project sử dụng development framework là truffle. Viết mã nguồn đầu tiên của Part Time contract.

Toàn bộ smart contract như sau

pragma solidity ^0.4.17;

contract PartTime {

struct Job {

uint256 id;

address creator;

uint256 salary;

bytes title;

bytes description;

}

uint256 totalJob;

mapping (uint256 => Job) public jobData;

function createJob(uint256 salary, bytes title, bytes description)

returns(uint256 jobId)

{

// Saving a little gas by create a temporary object

Job memory newJob;

// Assign jobId

jobId = totalJob;

newJob.id = jobId;

newJob.title = title;

newJob.description = description;

newJob.salary = salary;

newJob.creator = msg.sender;

// Append newJob to jobData

jobData[totalJob++] = newJob;

}

}

Struct job

Mình define struct Job chứa thông tin của một công việc part time, bao gồm các thông tin như id, title, description, salary, creator:

struct Job {

uint256 id;

address creator;

uint256 salary;

bytes title;

bytes description;

}

Mapping dữ liệu

Mình muốn có thể chứa nhiều công việc trong smart contract, nên mình khai báo một mapping để chứa được nhiều jobs hơn, đoạn code này làm nhiệm vụ mapping một unsigned integer 256 bits vào một struct job:

mapping (uint256 => Job) public jobData;

Mapping thế này cho phép bạn truy cập lại dữ liệu cũ khi bạn có được index của dữ liệu, thông qua sử dụng toán tử [] (khá giống với array, nhưng dùng mapping tiết kiệm gas hơn).

Thêm một record vào bảng mapping

function createJob(uint256 salary, bytes title, bytes description)

returns(uint256 jobId)

{

// Saving a little gas by create a temporary object

Job memory newJob;

// Assign jobId

jobId = totalJob;

newJob.id = jobId;

newJob.title = title;

newJob.description = description;

newJob.salary = salary;

newJob.creator = msg.sender;

 

// Append newJob to jobData

jobData[totalJob++] = newJob;

}

Function này sẽ thêm một job vào phía cuối mapping table chứa rất nhiều struct job mà chúng ta lưu trong jobData.

Thử nghiệm deploy

Smart contracts

Đầu tiên mình thực thi ganache-cli:

Smart contracts

Giờ chúng ta open một command prompt khác thực thi:Toàn bộ mã nguồn các bạn có thể tải về tại https://github.com/chiro-hiro/part-time-dapp (phân phối theo giấy phép MIT).

Dislaimer: Đây là thông tin cung cấp dưới dạng blog cá nhân, không phải thông tin tổng hợp hay lời khuyên đầu tư. Chúng tôi không chịu trách nhiệm về các quyết định đầu tư của bạn.

MỚI CẬP NHẬT

Dòng chảy ra ròng 4,5 tỷ USD tạo nên động lực tăng giá cho...

Dữ liệu từ IntoTheBlock tiết lộ rằng đã có dòng tiền trị giá 4,5 tỷ USD rút khỏi các sàn giao dịch trong bảy...
Cơ quan quản lý Hoa Kỳ xuất bản Hướng dẫn về tiền điện tử

Cơ quan quản lý Hoa Kỳ xuất bản hướng dẫn về tiền điện tử...

Cơ quan Quản lý Công nghiệp Tài chính Hoa Kỳ (FINRA) đã công bố một hướng dẫn toàn diện dành cho các nhà đầu...
ca-voi-mua-altcoin

Cá voi đã tích lũy 3 altcoin này trong tuần qua

Xu hướng tăng của thị trường được kích hoạt bởi chiến thắng của Donald Trump trong cuộc bầu cử tổng thống Mỹ ngày 5...
Bộ trưởng dịch vụ tài chính Ấn Độ bày tỏ sự hoài nghi về tiền điện tử

Bộ trưởng DFS Ấn Độ bày tỏ sự hoài nghi sâu sắc về tiền...

Mới đây, tại Hội nghị SBI Banking & Economics Conclave, M. Nagaraju, Bộ trưởng Bộ Dịch vụ Tài chính (DFS) của Ấn Độ, đã...

Giá Bitcoin có thể tăng lên tới 140.000 USD, quỹ đầu tư sử dụng...

Intelligent Alpha là một quỹ đầu tư trị giá 30 triệu USD, nơi trí tuệ nhân tạo (AI) hoàn toàn đảm nhận vai trò...

Ví Phantom vượt Coinbase trong bảng xếp hạng Apple App Store nhờ cơn sốt memecoin

Sự thay đổi trong xu hướng ưa chuộng của người dùng đối với các ứng dụng tiền điện tử đã tạo ra bất ngờ...
sol-tang-gia

Giá Solana (SOL) đạt ATH mới, mục tiêu tiếp theo ở đâu?

Solana (SOL) đã tăng vọt lên mức cao kỷ lục $264,50 vào ngày 23/11, được thúc đẩy bởi đà tăng của Bitcoin (BTC) tiến...
Lạm phát Ethereum tăng vọt giữa những thay đổi của Dencun

Ethereum đang trải qua giai đoạn lạm phát dài nhất từ trước đến nay

Ethereum đang trải qua giai đoạn lạm phát dài nhất từ trước đến nay, với hơn 350.000 ETH (trị giá khoảng 1,1 tỷ USD)...

Những dự án này sẽ mở khóa 475 triệu USD vào tuần tới

Vào thứ Sáu, dữ liệu từ Tokenomist tiết lộ rằng thị trường tiền điện tử sẽ trải qua một đợt gia tăng nguồn cung...

Cộng đồng crypto hoảng sợ sau lời bình “Bitcoin là người chiến thắng” của...

Jim Cramer, người dẫn chương trình Mad Money, đã gây bất ngờ lớn cho cộng đồng đầu tư Bitcoin vào thứ Sáu, khi đưa...

Sui đang phát triển vượt bậc và cạnh tranh với Aptos để trở thành...

Hệ sinh thái blockchain Sui đã ghi nhận sự tăng trưởng ấn tượng trong thời gian gần đây, với sự gia tăng mạnh mẽ...

Giá Coin hôm nay 23/11: Bitcoin tiếp tục lập ATH mới sát $100.000, altcoin...

Bitcoin đang tiến gần đến mốc $100.000, được thúc đẩy bởi kỳ vọng về các quy định thân thiện của Hoa Kỳ và sự...

Trump chọn tỷ phú ủng hộ crypto Scott Bessent làm Bộ trưởng Tài chính

Tổng thống đắc cử Mỹ Donald Trump đã đề cử Scott Bessent, nhà quản lý quỹ đầu cơ và là người đam mê tiền điện...

Ngày phát hành token Magic Eden được ấn định vào 10 tháng 12

ME Foundation đã công bố lịch ra mắt token hệ sinh thái ME, được xây dựng trên nền tảng Solana và gắn liền với...

Cboe ra mắt quyền chọn Bitcoin thanh toán tiền mặt theo chỉ số ETF

Cboe Global Markets chuẩn bị ra mắt các quyền chọn thanh toán bằng tiền mặt đầu tiên gắn liền với giá Bitcoin giao ngay,...
ngay-23-11-phan-tich

Phân tích kỹ thuật ngày 23 tháng 11: BTC, ETH, SOL, BNB, XRP, DOGE,...

Bitcoin (BTC) đang cho thấy dấu hiệu tăng trưởng mạnh mẽ khi chỉ còn cách mốc tâm lý quan trọng $100.000 một khoảng ngắn...