Giao diện
Hợp đồng và địa chỉ
Chain id 10143 (Monad testnet), RPC https://testnet-rpc.monad.xyz, explorer testnet.monadscan.com.
Địa chỉ đã deploy
| Hợp đồng | Địa chỉ | Block |
|---|---|---|
| IdentityRegistry | 0xa67ef35974bc8874318d249b6e74c7bd5870d1db | 63285812 |
| CommunityRegistry | 0x41c19889a3218000482a1cd6e13640edcd16cf32 | 63285812 |
| PostRegistry | 0xaC74A6AF7Ec96e28F2885916673EF3B9aACF10F5 | 63379890 |
| ChronoFeed | 0xF9CC631A04C5398Be97d5410303Cd61bD56d1a79 | 63379890 |
| HotFeed | 0xAF50B9FE82E42a7fCb9B7a31BC1DDB9dd02a661d | 63379890 |
| BestFeed | 0x383C7Af1CA32f72f916a14bb03f95ec1D98A14E6 | 63379890 |
| ControversialFeed | 0x6A94E5a83102b04c5965F8A756e2cB84c6B7170c | 63379890 |
| AlgorithmRegistry | 0xeEC08F90CFe669e3366933cF1C72fe4f08A3F289 | 63379890 |
Không hợp đồng nào có hàm admin. Kể cả đội phát triển cũng không gỡ được thuật toán, xoá bài hay ban tài khoản.
PostRegistry
Giữ bài viết, phiếu bầu và toàn bộ sổ karma.
solidity
uint256 public nextPostId = 1;
mapping(address => int256) public karmaOf;
mapping(uint256 => mapping(address => bool)) public hasLiked;
mapping(uint256 => mapping(address => bool)) public hasDisliked;
struct Post {
address author;
uint48 createdAt;
uint48 parentId; // 0 = bài, khác 0 = bình luận
uint32 likeCount; // thô
uint32 weightedLikes; // có trọng số
uint32 dislikeCount; // thô
uint32 weightedDislikes; // có trọng số
uint32 repostCount; // dự trữ
uint32 replyCount;
}
function post(string text, string mediaURI) external;
function reply(uint48 parentId, string text, string mediaURI) external;
function postOf(uint256 id) external view returns (Post memory);
function postsOf(uint256[] ids) external view returns (Post[] memory);
function like(uint256 id) external;
function dislike(uint256 id) external;
function unlike(uint256 id) external;
function undislike(uint256 id) external;
function karmaOf(address) external view returns (int256); // 100 điểm = 1 phiếu
function weightOf(address) external view returns (uint32); // 0–200Sự kiện: PostCreated, Liked(id, account, weight), Unliked, Disliked(id, account, weight), Undisliked.
Quy tắc: không vote bài của chính mình; rút phiếu trả lại đúng trọng số đã cộng; karma âm thì trọng số bằng 0. Xem Karma và trọng số.
IdentityRegistry
Tên và metadata, không gì khác.
solidity
function register(bytes32 handle, string metadataURI) external;
function changeHandle(bytes32 newHandle) external; // trả lại tên cũ
function setMetadata(string metadataURI) external;Sự kiện: Registered, HandleChanged, MetadataUpdated. Handle là bytes32, 3–21 ký tự a–z0–9_. Đổi tên giải phóng tên cũ trong cùng một giao dịch.
CommunityRegistry
Cộng đồng là một nhãn công khai; hợp đồng không thể xoá bài, ban tài khoản hay chuyển tên.
solidity
function create(bytes32 name, string metadataURI) external;
function join(bytes32 name) external;
function leave(bytes32 name) external;
function setMetadata(bytes32 name, string metadataURI) external; // chỉ creator
function isValidName(bytes32 name) public pure returns (bool);Sự kiện: Created, Joined, Left, MetadataUpdated. join/leave idempotent; tạo cộng đồng không tự tham gia. Xem Cộng đồng.
AlgorithmRegistry
Danh sách thuật toán và slot mặc định.
solidity
uint8 public constant SLOT_FEED = 0;
uint8 public constant SLOT_EXPLORE = 1;
function register(IFeedAlgorithm algo) external returns (uint256 id);
function algorithmAt(uint256 id) external view returns (address);
function algorithmCount() external view returns (uint256);
function setMyAlgorithm(uint8 slot, uint256 algorithmId) external;
function algorithmOf(address user, uint8 slot) external view returns (address);Sự kiện: AlgorithmRegistered, AlgorithmSelected. register không cần quyền. Xem Thuật toán.