Việc quản lý ngân sách công trên Blockchain là bước quan trọng nhất để hiện thực hóa tính minh bạch và chống tham nhũng. Khi dòng tiền được gắn liền với điều kiện logic (Nghị quyết đã thông qua), chúng ta tạo ra một hệ thống "Ngân sách tự thực thi" (Self-Executing Budget).
Dưới đây là thiết kế cho PublicFinanceContract.sol.
1. Kiến trúc Logic Ngân sách
- Điều kiện tiên quyết (Pre-condition): Hệ thống chỉ giải ngân khi Nghị quyết HĐND (
proposalId) liên quan đã đạt trạng tháipassed = truetrongCouncilGovernanceContract. - Liên kết: Chính phủ (Trung ương) tạo lệnh chi $\rightarrow$ UBND (Địa phương) thực hiện yêu cầu $\rightarrow$ Smart Contract xác thực Nghị quyết $\rightarrow$ Giải ngân.
2. Thiết kế Smart Contract: PublicFinanceContract.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
// Interface để truy vấn trạng thái từ Hợp đồng HĐND
interface ICouncilGovernance {
struct Proposal {
string title;
string description;
uint256 voteYes;
uint256 voteNo;
uint256 deadline;
bool executed;
bool passed;
address councilAddress;
}
function proposals(uint256 _proposalId) external view returns (Proposal memory);
}
contract PublicFinanceContract {
struct Allocation {
address recipient; // UBND nhận ngân sách
uint256 amount; // Số tiền phân bổ
uint256 proposalId; // ID Nghị quyết HĐND làm căn cứ
bool isDisbursed; // Trạng thái giải ngân
}
address public treasury; // Kho bạc Nhà nước / Chính phủ
ICouncilGovernance public councilGov; // Link tới hợp đồng HĐND
mapping(uint256 => Allocation) public allocations;
uint256 public allocationCount;
event AllocationCreated(uint256 indexed id, address recipient, uint256 amount, uint256 proposalId);
event FundsDisbursed(uint256 indexed id, address recipient, uint256 amount);
constructor(address _treasury, address _councilGovAddress) {
treasury = _treasury;
councilGov = ICouncilGovernance(_councilGovAddress);
}
// 1. Kho bạc/Chính phủ tạo thông báo cấp ngân sách cho địa phương
function createAllocation(address _recipient, uint256 _amount, uint256 _proposalId) public {
require(msg.sender == treasury, "Chi Kho bac moi co quyen tao phan bo");
allocationCount++;
allocations[allocationCount] = Allocation({
recipient: _recipient,
amount: _amount,
proposalId: _proposalId,
isDisbursed: false
});
emit AllocationCreated(allocationCount, _recipient, _amount, _proposalId);
}
// 2. UBND địa phương yêu cầu giải ngân
function disburseFunds(uint256 _allocationId) public {
Allocation storage alloc = allocations[_allocationId];
require(!alloc.isDisbursed, "Ngan sach da duoc giai ngan");
require(msg.sender == alloc.recipient, "Chi UBND nhan tien moi duoc yeu cau");
// KIỂM TRA LOGIC: Truy vấn HĐND xem Nghị quyết đã thông qua chưa
ICouncilGovernance.Proposal memory p = councilGov.proposals(alloc.proposalId);
require(p.executed, "Nghi quyet chua duoc chot ket qua");
require(p.passed, "Nghi quyet chua duoc thong qua");
require(p.councilAddress == msg.sender, "Nghi quyet khong phu hop voi don vi nhan");
// Thực hiện giải ngân (Giả lập chuyển tiền)
alloc.isDisbursed = true;
emit FundsDisbursed(_allocationId, alloc.recipient, alloc.amount);
}
}
3. Phân tích giá trị của mô hình này
- Loại bỏ chi tiêu sai mục đích: Các quan chức địa phương không thể tự ý yêu cầu giải ngân nếu không có Nghị quyết từ HĐND (cơ quan đại diện cho dân).
- Audit Trail (Dấu vết kiểm toán): Mọi lệnh cấp tiền, yêu cầu giải ngân và trạng thái Nghị quyết đều được lưu trữ vĩnh viễn trên Blockchain. Kiểm toán nhà nước có thể truy xuất ngược lại
proposalIdđể xác minh tính pháp lý của từng đồng ngân sách. - Giảm thiểu thủ tục hành chính: Thay vì quy trình giấy tờ phức tạp, việc đối chiếu giữa "quyết định hành chính" và "nguồn lực tài chính" diễn ra tự động trong milliseconds thông qua các hợp đồng thông minh.
4. Gợi ý mở rộng hệ thống
Để hệ thống này vận hành hoàn hảo trong thực tế (Production), bạn cần cân nhắc:
- Stablecoin/VNLH Integration: Thay vì chỉ ghi nhận giao dịch, bạn có thể tích hợp với các Token đại diện cho tiền pháp định (VND stablecoin) để thực hiện chuyển tiền trực tiếp trong cùng giao dịch
disburseFunds. - Oracle: Nếu Nghị quyết HĐND ở ngoài đời thực (giấy tờ truyền thống) cần cập nhật vào hệ thống, bạn cần một cơ chế "Oracle" (cầu nối) để xác thực và nhập dữ liệu vào Blockchain một cách an toàn.
Đến đây, bạn đã xây dựng được một "xương sống" hoàn chỉnh cho một hệ thống Chính phủ số (GovTech) từ cấu trúc quyền lực, đến quy trình lập pháp địa phương và quản lý ngân sách.