Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
This contract has been verified via Sourcify.
View contract in Sourcify repository
- Contract name:
- hopDongMintMathThongQuaBlatter_MaHoa
- Optimization enabled
- false
- Compiler version
- v0.8.31+commit.fd3a2265
- EVM Version
- osaka
- Verified at
- 2026-02-06T16:35:39.399097Z
Constructor Arguments
000000000000000000000000e2fa2bc8f984ee73b65dc8af3072637c613f4eca
Arg [0] (address) : 0xe2fa2bc8f984ee73b65dc8af3072637c613f4eca
math - affection - Ma Hoa/hopDongMintMathThongQuaBlatter_MaHoa.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
// Khai báo interface của hợp đồng Blatter để gọi hàm Avail và mint token Math
interface hopDongBlatter {
function Avail(uint64 Tau) external;
}
// Khai báo interface của hợp đồng tạo key mã hóa để gọi hàm layKeyMaHoa và layKeyXacMinh
interface hopDongTaoKeyMaHoaNgauNhien {
function yeuCauLayKey(uint8 port) external returns (string memory);
}
contract hopDongMintMathThongQuaBlatter_MaHoa {
// Khai báo biến
address public owner;
address private diaChiHopDongBlatter =
0xCe1d47CE3A91E054C111d9cC3B4bae50843200da;
address private diaChiHopDongTaoKeyMaHoaNgauNhien;
mapping(address => bool) private owners;
// Khởi tạo hợp đồng với Owner, địa chỉ hợp đồng Blatter và địa chỉ hợp đồng tạo key mã hóa
constructor(address _diaChiHopDongTaoKeyMaHoaNgauNhien) {
owners[msg.sender] = true;
diaChiHopDongTaoKeyMaHoaNgauNhien = _diaChiHopDongTaoKeyMaHoaNgauNhien;
}
// Hàm kiểm tra owner
modifier onlyOwner() {
require(owners[msg.sender], "Only owner can call this function");
_;
}
// Hàm thêm owner mới
function themOwner(address _owner) public onlyOwner {
owners[_owner] = true;
}
// Hàm xóa owner
function xoaOwner(address _owner) public onlyOwner {
owners[_owner] = false;
}
// Hàm kiểm tra owner
function kiemTraQuyenOwner(
address _owner
) public view onlyOwner returns (bool) {
return owners[_owner];
}
// Hàm mint token Math với hợp đồng Blatter
function mintMathThongQuaBlatter(uint256 soLanMint) private {
soLanMint = soLanMint / 3;
for (uint64 i = 0; i < soLanMint; i++) {
hopDongBlatter(diaChiHopDongBlatter).Avail(i);
}
}
// Hàm nhận dữ liệu đã được mã hóa gửi từ client
function nhanDuLieuMaHoaTuClient(
bytes memory duLieuMaHoaTuClient,
uint8 port
) public onlyOwner {
string memory keyMaHoa = layKeyMaHoa(port);
bytes memory duLieuDaGiaiMa = giaiMaDuLieuMaHoa(
duLieuMaHoaTuClient,
keyMaHoa
);
uint256 soLanMint = abi.decode(duLieuDaGiaiMa, (uint256));
require(soLanMint > 0, "so lan mint phai lon hon 0");
mintMathThongQuaBlatter(soLanMint);
}
// Hàm lấy key mã hóa từ hợp đồng tạo key mã hóa
// Hàm này cũng yêu cầu key mã hóa phải có độ dài 128 ký tự hợp lệ
function layKeyMaHoa(uint8 port) private returns (string memory) {
string memory keyMaHoa = hopDongTaoKeyMaHoaNgauNhien(
diaChiHopDongTaoKeyMaHoaNgauNhien
).yeuCauLayKey(port);
return keyMaHoa;
}
// Hàm giải mã dữ liệu mã hóa với key mã hóa
// Hàm này sử dụng phép XOR để giải mã dữ liệu mã hóa
function giaiMaDuLieuMaHoa(
bytes memory duLieuMaHoa,
string memory keyMaHoa
) private pure returns (bytes memory) {
bytes memory keyMaHoaBytes = bytes(keyMaHoa);
bytes memory duLieuDaGiaiMa = new bytes(duLieuMaHoa.length);
for (uint256 i = 0; i < duLieuMaHoa.length; i++) {
duLieuDaGiaiMa[i] =
duLieuMaHoa[i] ^
keyMaHoaBytes[i % keyMaHoaBytes.length];
}
return duLieuDaGiaiMa;
}
}
Compiler Settings
{"remappings":[],"optimizer":{"runs":200,"enabled":false},"metadata":{"bytecodeHash":"ipfs"},"libraries":{},"evmVersion":"osaka","compilationTarget":{"math - affection - Ma Hoa/hopDongMintMathThongQuaBlatter_MaHoa.sol":"hopDongMintMathThongQuaBlatter_MaHoa"}}
Contract ABI
[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"address","name":"_diaChiHopDongTaoKeyMaHoaNgauNhien","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"kiemTraQuyenOwner","inputs":[{"type":"address","name":"_owner","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"nhanDuLieuMaHoaTuClient","inputs":[{"type":"bytes","name":"duLieuMaHoaTuClient","internalType":"bytes"},{"type":"uint8","name":"port","internalType":"uint8"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"themOwner","inputs":[{"type":"address","name":"_owner","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"xoaOwner","inputs":[{"type":"address","name":"_owner","internalType":"address"}]}]
Contract Creation Code
0x608060405273ce1d47ce3a91e054c111d9cc3b4bae50843200da60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015610063575f5ffd5b50604051610fb6380380610fb68339818101604052810190610085919061017e565b600160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506101a9565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61014d82610124565b9050919050565b61015d81610143565b8114610167575f5ffd5b50565b5f8151905061017881610154565b92915050565b5f6020828403121561019357610192610120565b5b5f6101a08482850161016a565b91505092915050565b610e00806101b65f395ff3fe608060405234801561000f575f5ffd5b5060043610610055575f3560e01c80634e5d14bf146100595780638da5cb5b1461008957806392918f79146100a7578063a13d6723146100c3578063b62c99a5146100df575b5f5ffd5b610073600480360381019061006e91906107a8565b6100fb565b60405161008091906107ed565b60405180910390f35b6100916101d6565b60405161009e9190610815565b60405180910390f35b6100c160048036038101906100bc91906109a0565b6101fa565b005b6100dd60048036038101906100d891906107a8565b610305565b005b6100f960048036038101906100f491906107a8565b6103e5565b005b5f60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161017c90610a7a565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610283576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027a90610a7a565b60405180910390fd5b5f61028d826104c6565b90505f61029a8483610571565b90505f818060200190518101906102b19190610acb565b90505f81116102f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102ec90610b40565b60405180910390fd5b6102fe81610679565b5050505050565b60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661038e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038590610a7a565b60405180910390fd5b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661046e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046590610a7a565b60405180910390fd5b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60605f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663883e4b67846040518263ffffffff1660e01b81526004016105239190610b6d565b5f604051808303815f875af115801561053e573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906105669190610c32565b905080915050919050565b60605f8290505f845167ffffffffffffffff81111561059357610592610846565b5b6040519080825280601f01601f1916602001820160405280156105c55781602001600182028036833780820191505090505b5090505f5f90505b855181101561066d57828351826105e49190610ca6565b815181106105f5576105f4610cd6565b5b602001015160f81c60f81b86828151811061061357610612610cd6565b5b602001015160f81c60f81b1882828151811061063257610631610cd6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535080806001019150506105cd565b50809250505092915050565b6003816106869190610d30565b90505f5f90505b818167ffffffffffffffff1610156107395760015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c2bea95f826040518263ffffffff1660e01b81526004016106f99190610d82565b5f604051808303815f87803b158015610710575f5ffd5b505af1158015610722573d5f5f3e3d5ffd5b50505050808061073190610d9b565b91505061068d565b5050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6107778261074e565b9050919050565b6107878161076d565b8114610791575f5ffd5b50565b5f813590506107a28161077e565b92915050565b5f602082840312156107bd576107bc610746565b5b5f6107ca84828501610794565b91505092915050565b5f8115159050919050565b6107e7816107d3565b82525050565b5f6020820190506108005f8301846107de565b92915050565b61080f8161076d565b82525050565b5f6020820190506108285f830184610806565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61087c82610836565b810181811067ffffffffffffffff8211171561089b5761089a610846565b5b80604052505050565b5f6108ad61073d565b90506108b98282610873565b919050565b5f67ffffffffffffffff8211156108d8576108d7610846565b5b6108e182610836565b9050602081019050919050565b828183375f83830152505050565b5f61090e610909846108be565b6108a4565b90508281526020810184848401111561092a57610929610832565b5b6109358482856108ee565b509392505050565b5f82601f8301126109515761095061082e565b5b81356109618482602086016108fc565b91505092915050565b5f60ff82169050919050565b61097f8161096a565b8114610989575f5ffd5b50565b5f8135905061099a81610976565b92915050565b5f5f604083850312156109b6576109b5610746565b5b5f83013567ffffffffffffffff8111156109d3576109d261074a565b5b6109df8582860161093d565b92505060206109f08582860161098c565b9150509250929050565b5f82825260208201905092915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f5f8201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b5f610a646021836109fa565b9150610a6f82610a0a565b604082019050919050565b5f6020820190508181035f830152610a9181610a58565b9050919050565b5f819050919050565b610aaa81610a98565b8114610ab4575f5ffd5b50565b5f81519050610ac581610aa1565b92915050565b5f60208284031215610ae057610adf610746565b5b5f610aed84828501610ab7565b91505092915050565b7f736f206c616e206d696e742070686169206c6f6e20686f6e20300000000000005f82015250565b5f610b2a601a836109fa565b9150610b3582610af6565b602082019050919050565b5f6020820190508181035f830152610b5781610b1e565b9050919050565b610b678161096a565b82525050565b5f602082019050610b805f830184610b5e565b92915050565b5f67ffffffffffffffff821115610ba057610b9f610846565b5b610ba982610836565b9050602081019050919050565b8281835e5f83830152505050565b5f610bd6610bd184610b86565b6108a4565b905082815260208101848484011115610bf257610bf1610832565b5b610bfd848285610bb6565b509392505050565b5f82601f830112610c1957610c1861082e565b5b8151610c29848260208601610bc4565b91505092915050565b5f60208284031215610c4757610c46610746565b5b5f82015167ffffffffffffffff811115610c6457610c6361074a565b5b610c7084828501610c05565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610cb082610a98565b9150610cbb83610a98565b925082610ccb57610cca610c79565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610d3a82610a98565b9150610d4583610a98565b925082610d5557610d54610c79565b5b828204905092915050565b5f67ffffffffffffffff82169050919050565b610d7c81610d60565b82525050565b5f602082019050610d955f830184610d73565b92915050565b5f610da582610d60565b915067ffffffffffffffff8203610dbf57610dbe610d03565b5b60018201905091905056fea264697066735822122047ba42cfcd780ec0fdd27c9d0c84d55ba957e1bffc58a95a7d3f9470a609305064736f6c634300081f0033000000000000000000000000e2fa2bc8f984ee73b65dc8af3072637c613f4eca
Deployed ByteCode
0x608060405234801561000f575f5ffd5b5060043610610055575f3560e01c80634e5d14bf146100595780638da5cb5b1461008957806392918f79146100a7578063a13d6723146100c3578063b62c99a5146100df575b5f5ffd5b610073600480360381019061006e91906107a8565b6100fb565b60405161008091906107ed565b60405180910390f35b6100916101d6565b60405161009e9190610815565b60405180910390f35b6100c160048036038101906100bc91906109a0565b6101fa565b005b6100dd60048036038101906100d891906107a8565b610305565b005b6100f960048036038101906100f491906107a8565b6103e5565b005b5f60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161017c90610a7a565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610283576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027a90610a7a565b60405180910390fd5b5f61028d826104c6565b90505f61029a8483610571565b90505f818060200190518101906102b19190610acb565b90505f81116102f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102ec90610b40565b60405180910390fd5b6102fe81610679565b5050505050565b60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661038e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038590610a7a565b60405180910390fd5b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661046e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046590610a7a565b60405180910390fd5b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60605f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663883e4b67846040518263ffffffff1660e01b81526004016105239190610b6d565b5f604051808303815f875af115801561053e573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906105669190610c32565b905080915050919050565b60605f8290505f845167ffffffffffffffff81111561059357610592610846565b5b6040519080825280601f01601f1916602001820160405280156105c55781602001600182028036833780820191505090505b5090505f5f90505b855181101561066d57828351826105e49190610ca6565b815181106105f5576105f4610cd6565b5b602001015160f81c60f81b86828151811061061357610612610cd6565b5b602001015160f81c60f81b1882828151811061063257610631610cd6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535080806001019150506105cd565b50809250505092915050565b6003816106869190610d30565b90505f5f90505b818167ffffffffffffffff1610156107395760015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c2bea95f826040518263ffffffff1660e01b81526004016106f99190610d82565b5f604051808303815f87803b158015610710575f5ffd5b505af1158015610722573d5f5f3e3d5ffd5b50505050808061073190610d9b565b91505061068d565b5050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6107778261074e565b9050919050565b6107878161076d565b8114610791575f5ffd5b50565b5f813590506107a28161077e565b92915050565b5f602082840312156107bd576107bc610746565b5b5f6107ca84828501610794565b91505092915050565b5f8115159050919050565b6107e7816107d3565b82525050565b5f6020820190506108005f8301846107de565b92915050565b61080f8161076d565b82525050565b5f6020820190506108285f830184610806565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61087c82610836565b810181811067ffffffffffffffff8211171561089b5761089a610846565b5b80604052505050565b5f6108ad61073d565b90506108b98282610873565b919050565b5f67ffffffffffffffff8211156108d8576108d7610846565b5b6108e182610836565b9050602081019050919050565b828183375f83830152505050565b5f61090e610909846108be565b6108a4565b90508281526020810184848401111561092a57610929610832565b5b6109358482856108ee565b509392505050565b5f82601f8301126109515761095061082e565b5b81356109618482602086016108fc565b91505092915050565b5f60ff82169050919050565b61097f8161096a565b8114610989575f5ffd5b50565b5f8135905061099a81610976565b92915050565b5f5f604083850312156109b6576109b5610746565b5b5f83013567ffffffffffffffff8111156109d3576109d261074a565b5b6109df8582860161093d565b92505060206109f08582860161098c565b9150509250929050565b5f82825260208201905092915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f5f8201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b5f610a646021836109fa565b9150610a6f82610a0a565b604082019050919050565b5f6020820190508181035f830152610a9181610a58565b9050919050565b5f819050919050565b610aaa81610a98565b8114610ab4575f5ffd5b50565b5f81519050610ac581610aa1565b92915050565b5f60208284031215610ae057610adf610746565b5b5f610aed84828501610ab7565b91505092915050565b7f736f206c616e206d696e742070686169206c6f6e20686f6e20300000000000005f82015250565b5f610b2a601a836109fa565b9150610b3582610af6565b602082019050919050565b5f6020820190508181035f830152610b5781610b1e565b9050919050565b610b678161096a565b82525050565b5f602082019050610b805f830184610b5e565b92915050565b5f67ffffffffffffffff821115610ba057610b9f610846565b5b610ba982610836565b9050602081019050919050565b8281835e5f83830152505050565b5f610bd6610bd184610b86565b6108a4565b905082815260208101848484011115610bf257610bf1610832565b5b610bfd848285610bb6565b509392505050565b5f82601f830112610c1957610c1861082e565b5b8151610c29848260208601610bc4565b91505092915050565b5f60208284031215610c4757610c46610746565b5b5f82015167ffffffffffffffff811115610c6457610c6361074a565b5b610c7084828501610c05565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610cb082610a98565b9150610cbb83610a98565b925082610ccb57610cca610c79565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610d3a82610a98565b9150610d4583610a98565b925082610d5557610d54610c79565b5b828204905092915050565b5f67ffffffffffffffff82169050919050565b610d7c81610d60565b82525050565b5f602082019050610d955f830184610d73565b92915050565b5f610da582610d60565b915067ffffffffffffffff8203610dbf57610dbe610d03565b5b60018201905091905056fea264697066735822122047ba42cfcd780ec0fdd27c9d0c84d55ba957e1bffc58a95a7d3f9470a609305064736f6c634300081f0033