-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #3 from OsmosysSoftware/setup-contract
feat: add smart contract for blockchain
- Loading branch information
Showing
3 changed files
with
176 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,129 @@ | ||
{ | ||
"_format": "hh-sol-artifact-1", | ||
"contractName": "MessageStorage", | ||
"sourceName": "contracts/MessageStorage.sol", | ||
"abi": [ | ||
{ | ||
"inputs": [], | ||
"name": "getAllMessages", | ||
"outputs": [ | ||
{ | ||
"components": [ | ||
{ | ||
"internalType": "uint256", | ||
"name": "userId", | ||
"type": "uint256" | ||
}, | ||
{ | ||
"internalType": "string", | ||
"name": "message", | ||
"type": "string" | ||
}, | ||
{ | ||
"internalType": "string", | ||
"name": "data", | ||
"type": "string" | ||
} | ||
], | ||
"internalType": "struct MessageStorage.Message[]", | ||
"name": "", | ||
"type": "tuple[]" | ||
} | ||
], | ||
"stateMutability": "view", | ||
"type": "function" | ||
}, | ||
{ | ||
"inputs": [ | ||
{ | ||
"internalType": "uint256", | ||
"name": "_userId", | ||
"type": "uint256" | ||
} | ||
], | ||
"name": "getMessagesByUserId", | ||
"outputs": [ | ||
{ | ||
"components": [ | ||
{ | ||
"internalType": "uint256", | ||
"name": "userId", | ||
"type": "uint256" | ||
}, | ||
{ | ||
"internalType": "string", | ||
"name": "message", | ||
"type": "string" | ||
}, | ||
{ | ||
"internalType": "string", | ||
"name": "data", | ||
"type": "string" | ||
} | ||
], | ||
"internalType": "struct MessageStorage.Message[]", | ||
"name": "", | ||
"type": "tuple[]" | ||
} | ||
], | ||
"stateMutability": "view", | ||
"type": "function" | ||
}, | ||
{ | ||
"inputs": [ | ||
{ | ||
"internalType": "uint256", | ||
"name": "", | ||
"type": "uint256" | ||
} | ||
], | ||
"name": "messages", | ||
"outputs": [ | ||
{ | ||
"internalType": "uint256", | ||
"name": "userId", | ||
"type": "uint256" | ||
}, | ||
{ | ||
"internalType": "string", | ||
"name": "message", | ||
"type": "string" | ||
}, | ||
{ | ||
"internalType": "string", | ||
"name": "data", | ||
"type": "string" | ||
} | ||
], | ||
"stateMutability": "view", | ||
"type": "function" | ||
}, | ||
{ | ||
"inputs": [ | ||
{ | ||
"internalType": "uint256", | ||
"name": "_userId", | ||
"type": "uint256" | ||
}, | ||
{ | ||
"internalType": "string", | ||
"name": "_message", | ||
"type": "string" | ||
}, | ||
{ | ||
"internalType": "string", | ||
"name": "_data", | ||
"type": "string" | ||
} | ||
], | ||
"name": "storeMessage", | ||
"outputs": [], | ||
"stateMutability": "nonpayable", | ||
"type": "function" | ||
} | ||
], | ||
"bytecode": "0x608060405234801561001057600080fd5b50610f63806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80630d80fefd1461005157806353f5e3801461008357806363ce3f0a146100a1578063f9738b9b146100d1575b600080fd5b61006b60048036038101906100669190610744565b6100ed565b60405161007a93929190610810565b60405180910390f35b61008b610237565b60405161009891906109c7565b60405180910390f35b6100bb60048036038101906100b69190610744565b6103c4565b6040516100c891906109c7565b60405180910390f35b6100eb60048036038101906100e69190610b1e565b610656565b005b600081815481106100fd57600080fd5b906000526020600020906003020160009150905080600001549080600101805461012690610bd8565b80601f016020809104026020016040519081016040528092919081815260200182805461015290610bd8565b801561019f5780601f106101745761010080835404028352916020019161019f565b820191906000526020600020905b81548152906001019060200180831161018257829003601f168201915b5050505050908060020180546101b490610bd8565b80601f01602080910402602001604051908101604052809291908181526020018280546101e090610bd8565b801561022d5780601f106102025761010080835404028352916020019161022d565b820191906000526020600020905b81548152906001019060200180831161021057829003601f168201915b5050505050905083565b60606000805480602002602001604051908101604052809291908181526020016000905b828210156103bb57838290600052602060002090600302016040518060600160405290816000820154815260200160018201805461029890610bd8565b80601f01602080910402602001604051908101604052809291908181526020018280546102c490610bd8565b80156103115780601f106102e657610100808354040283529160200191610311565b820191906000526020600020905b8154815290600101906020018083116102f457829003601f168201915b5050505050815260200160028201805461032a90610bd8565b80601f016020809104026020016040519081016040528092919081815260200182805461035690610bd8565b80156103a35780601f10610378576101008083540402835291602001916103a3565b820191906000526020600020905b81548152906001019060200180831161038657829003601f168201915b5050505050815250508152602001906001019061025b565b50505050905090565b60606000805b60008054905081101561041f5783600082815481106103ec576103eb610c09565b5b9060005260206000209060030201600001540361041257818061040e90610c67565b9250505b80806001019150506103ca565b5060008167ffffffffffffffff81111561043c5761043b6109f3565b5b60405190808252806020026020018201604052801561047557816020015b6104626106d9565b81526020019060019003908161045a5790505b5090506000805b60008054905081101561064a57856000828154811061049e5761049d610c09565b5b9060005260206000209060030201600001540361063d57600081815481106104c9576104c8610c09565b5b9060005260206000209060030201604051806060016040529081600082015481526020016001820180546104fc90610bd8565b80601f016020809104026020016040519081016040528092919081815260200182805461052890610bd8565b80156105755780601f1061054a57610100808354040283529160200191610575565b820191906000526020600020905b81548152906001019060200180831161055857829003601f168201915b5050505050815260200160028201805461058e90610bd8565b80601f01602080910402602001604051908101604052809291908181526020018280546105ba90610bd8565b80156106075780601f106105dc57610100808354040283529160200191610607565b820191906000526020600020905b8154815290600101906020018083116105ea57829003601f168201915b50505050508152505083838151811061062357610622610c09565b5b6020026020010181905250818061063990610c67565b9250505b808060010191505061047c565b50819350505050919050565b600060405180606001604052808581526020018481526020018381525090806001815401808255809150506001900390600052602060002090600302016000909190919091506000820151816000015560208201518160010190816106bb9190610e5b565b5060408201518160020190816106d19190610e5b565b505050505050565b60405180606001604052806000815260200160608152602001606081525090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6107218161070e565b811461072c57600080fd5b50565b60008135905061073e81610718565b92915050565b60006020828403121561075a57610759610704565b5b60006107688482850161072f565b91505092915050565b61077a8161070e565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b838110156107ba57808201518184015260208101905061079f565b60008484015250505050565b6000601f19601f8301169050919050565b60006107e282610780565b6107ec818561078b565b93506107fc81856020860161079c565b610805816107c6565b840191505092915050565b60006060820190506108256000830186610771565b818103602083015261083781856107d7565b9050818103604083015261084b81846107d7565b9050949350505050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61088a8161070e565b82525050565b600082825260208201905092915050565b60006108ac82610780565b6108b68185610890565b93506108c681856020860161079c565b6108cf816107c6565b840191505092915050565b60006060830160008301516108f26000860182610881565b506020830151848203602086015261090a82826108a1565b9150506040830151848203604086015261092482826108a1565b9150508091505092915050565b600061093d83836108da565b905092915050565b6000602082019050919050565b600061095d82610855565b6109678185610860565b93508360208202850161097985610871565b8060005b858110156109b557848403895281516109968582610931565b94506109a183610945565b925060208a0199505060018101905061097d565b50829750879550505050505092915050565b600060208201905081810360008301526109e18184610952565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610a2b826107c6565b810181811067ffffffffffffffff82111715610a4a57610a496109f3565b5b80604052505050565b6000610a5d6106fa565b9050610a698282610a22565b919050565b600067ffffffffffffffff821115610a8957610a886109f3565b5b610a92826107c6565b9050602081019050919050565b82818337600083830152505050565b6000610ac1610abc84610a6e565b610a53565b905082815260208101848484011115610add57610adc6109ee565b5b610ae8848285610a9f565b509392505050565b600082601f830112610b0557610b046109e9565b5b8135610b15848260208601610aae565b91505092915050565b600080600060608486031215610b3757610b36610704565b5b6000610b458682870161072f565b935050602084013567ffffffffffffffff811115610b6657610b65610709565b5b610b7286828701610af0565b925050604084013567ffffffffffffffff811115610b9357610b92610709565b5b610b9f86828701610af0565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610bf057607f821691505b602082108103610c0357610c02610ba9565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610c728261070e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610ca457610ca3610c38565b5b600182019050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302610d117fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610cd4565b610d1b8683610cd4565b95508019841693508086168417925050509392505050565b6000819050919050565b6000610d58610d53610d4e8461070e565b610d33565b61070e565b9050919050565b6000819050919050565b610d7283610d3d565b610d86610d7e82610d5f565b848454610ce1565b825550505050565b600090565b610d9b610d8e565b610da6818484610d69565b505050565b5b81811015610dca57610dbf600082610d93565b600181019050610dac565b5050565b601f821115610e0f57610de081610caf565b610de984610cc4565b81016020851015610df8578190505b610e0c610e0485610cc4565b830182610dab565b50505b505050565b600082821c905092915050565b6000610e3260001984600802610e14565b1980831691505092915050565b6000610e4b8383610e21565b9150826002028217905092915050565b610e6482610780565b67ffffffffffffffff811115610e7d57610e7c6109f3565b5b610e878254610bd8565b610e92828285610dce565b600060209050601f831160018114610ec55760008415610eb3578287015190505b610ebd8582610e3f565b865550610f25565b601f198416610ed386610caf565b60005b82811015610efb57848901518255600182019150602085019450602081019050610ed6565b86831015610f185784890151610f14601f891682610e21565b8355505b6001600288020188555050505b50505050505056fea2646970667358221220d71cabfa7bc2a965278dfb106ce8e8c45447dd53f92af19eb46e6294633ac0ce64736f6c63430008180033", | ||
"deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80630d80fefd1461005157806353f5e3801461008357806363ce3f0a146100a1578063f9738b9b146100d1575b600080fd5b61006b60048036038101906100669190610744565b6100ed565b60405161007a93929190610810565b60405180910390f35b61008b610237565b60405161009891906109c7565b60405180910390f35b6100bb60048036038101906100b69190610744565b6103c4565b6040516100c891906109c7565b60405180910390f35b6100eb60048036038101906100e69190610b1e565b610656565b005b600081815481106100fd57600080fd5b906000526020600020906003020160009150905080600001549080600101805461012690610bd8565b80601f016020809104026020016040519081016040528092919081815260200182805461015290610bd8565b801561019f5780601f106101745761010080835404028352916020019161019f565b820191906000526020600020905b81548152906001019060200180831161018257829003601f168201915b5050505050908060020180546101b490610bd8565b80601f01602080910402602001604051908101604052809291908181526020018280546101e090610bd8565b801561022d5780601f106102025761010080835404028352916020019161022d565b820191906000526020600020905b81548152906001019060200180831161021057829003601f168201915b5050505050905083565b60606000805480602002602001604051908101604052809291908181526020016000905b828210156103bb57838290600052602060002090600302016040518060600160405290816000820154815260200160018201805461029890610bd8565b80601f01602080910402602001604051908101604052809291908181526020018280546102c490610bd8565b80156103115780601f106102e657610100808354040283529160200191610311565b820191906000526020600020905b8154815290600101906020018083116102f457829003601f168201915b5050505050815260200160028201805461032a90610bd8565b80601f016020809104026020016040519081016040528092919081815260200182805461035690610bd8565b80156103a35780601f10610378576101008083540402835291602001916103a3565b820191906000526020600020905b81548152906001019060200180831161038657829003601f168201915b5050505050815250508152602001906001019061025b565b50505050905090565b60606000805b60008054905081101561041f5783600082815481106103ec576103eb610c09565b5b9060005260206000209060030201600001540361041257818061040e90610c67565b9250505b80806001019150506103ca565b5060008167ffffffffffffffff81111561043c5761043b6109f3565b5b60405190808252806020026020018201604052801561047557816020015b6104626106d9565b81526020019060019003908161045a5790505b5090506000805b60008054905081101561064a57856000828154811061049e5761049d610c09565b5b9060005260206000209060030201600001540361063d57600081815481106104c9576104c8610c09565b5b9060005260206000209060030201604051806060016040529081600082015481526020016001820180546104fc90610bd8565b80601f016020809104026020016040519081016040528092919081815260200182805461052890610bd8565b80156105755780601f1061054a57610100808354040283529160200191610575565b820191906000526020600020905b81548152906001019060200180831161055857829003601f168201915b5050505050815260200160028201805461058e90610bd8565b80601f01602080910402602001604051908101604052809291908181526020018280546105ba90610bd8565b80156106075780601f106105dc57610100808354040283529160200191610607565b820191906000526020600020905b8154815290600101906020018083116105ea57829003601f168201915b50505050508152505083838151811061062357610622610c09565b5b6020026020010181905250818061063990610c67565b9250505b808060010191505061047c565b50819350505050919050565b600060405180606001604052808581526020018481526020018381525090806001815401808255809150506001900390600052602060002090600302016000909190919091506000820151816000015560208201518160010190816106bb9190610e5b565b5060408201518160020190816106d19190610e5b565b505050505050565b60405180606001604052806000815260200160608152602001606081525090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6107218161070e565b811461072c57600080fd5b50565b60008135905061073e81610718565b92915050565b60006020828403121561075a57610759610704565b5b60006107688482850161072f565b91505092915050565b61077a8161070e565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b838110156107ba57808201518184015260208101905061079f565b60008484015250505050565b6000601f19601f8301169050919050565b60006107e282610780565b6107ec818561078b565b93506107fc81856020860161079c565b610805816107c6565b840191505092915050565b60006060820190506108256000830186610771565b818103602083015261083781856107d7565b9050818103604083015261084b81846107d7565b9050949350505050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61088a8161070e565b82525050565b600082825260208201905092915050565b60006108ac82610780565b6108b68185610890565b93506108c681856020860161079c565b6108cf816107c6565b840191505092915050565b60006060830160008301516108f26000860182610881565b506020830151848203602086015261090a82826108a1565b9150506040830151848203604086015261092482826108a1565b9150508091505092915050565b600061093d83836108da565b905092915050565b6000602082019050919050565b600061095d82610855565b6109678185610860565b93508360208202850161097985610871565b8060005b858110156109b557848403895281516109968582610931565b94506109a183610945565b925060208a0199505060018101905061097d565b50829750879550505050505092915050565b600060208201905081810360008301526109e18184610952565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610a2b826107c6565b810181811067ffffffffffffffff82111715610a4a57610a496109f3565b5b80604052505050565b6000610a5d6106fa565b9050610a698282610a22565b919050565b600067ffffffffffffffff821115610a8957610a886109f3565b5b610a92826107c6565b9050602081019050919050565b82818337600083830152505050565b6000610ac1610abc84610a6e565b610a53565b905082815260208101848484011115610add57610adc6109ee565b5b610ae8848285610a9f565b509392505050565b600082601f830112610b0557610b046109e9565b5b8135610b15848260208601610aae565b91505092915050565b600080600060608486031215610b3757610b36610704565b5b6000610b458682870161072f565b935050602084013567ffffffffffffffff811115610b6657610b65610709565b5b610b7286828701610af0565b925050604084013567ffffffffffffffff811115610b9357610b92610709565b5b610b9f86828701610af0565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610bf057607f821691505b602082108103610c0357610c02610ba9565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610c728261070e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610ca457610ca3610c38565b5b600182019050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302610d117fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610cd4565b610d1b8683610cd4565b95508019841693508086168417925050509392505050565b6000819050919050565b6000610d58610d53610d4e8461070e565b610d33565b61070e565b9050919050565b6000819050919050565b610d7283610d3d565b610d86610d7e82610d5f565b848454610ce1565b825550505050565b600090565b610d9b610d8e565b610da6818484610d69565b505050565b5b81811015610dca57610dbf600082610d93565b600181019050610dac565b5050565b601f821115610e0f57610de081610caf565b610de984610cc4565b81016020851015610df8578190505b610e0c610e0485610cc4565b830182610dab565b50505b505050565b600082821c905092915050565b6000610e3260001984600802610e14565b1980831691505092915050565b6000610e4b8383610e21565b9150826002028217905092915050565b610e6482610780565b67ffffffffffffffff811115610e7d57610e7c6109f3565b5b610e878254610bd8565b610e92828285610dce565b600060209050601f831160018114610ec55760008415610eb3578287015190505b610ebd8582610e3f565b865550610f25565b601f198416610ed386610caf565b60005b82811015610efb57848901518255600182019150602085019450602081019050610ed6565b86831015610f185784890151610f14601f891682610e21565b8355505b6001600288020188555050505b50505050505056fea2646970667358221220d71cabfa7bc2a965278dfb106ce8e8c45447dd53f92af19eb46e6294633ac0ce64736f6c63430008180033", | ||
"linkReferences": {}, | ||
"deployedLinkReferences": {} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
// SPDX-License-Identifier: MIT | ||
pragma solidity ^0.8.24; | ||
|
||
contract MessageStorage { | ||
struct Message { | ||
uint userId; | ||
string message; | ||
string data; | ||
} | ||
|
||
Message[] public messages; | ||
|
||
function storeMessage(uint _userId, string memory _message, string memory _data) public { | ||
messages.push(Message(_userId, _message, _data)); | ||
} | ||
|
||
function getAllMessages() public view returns (Message[] memory) { | ||
return messages; | ||
} | ||
|
||
function getMessagesByUserId(uint _userId) public view returns (Message[] memory) { | ||
uint count = 0; | ||
for (uint i = 0; i < messages.length; i++) { | ||
if (messages[i].userId == _userId) { | ||
count++; | ||
} | ||
} | ||
|
||
Message[] memory result = new Message[](count); | ||
uint j = 0; | ||
for (uint i = 0; i < messages.length; i++) { | ||
if (messages[i].userId == _userId) { | ||
result[j] = messages[i]; | ||
j++; | ||
} | ||
} | ||
|
||
return result; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
const { buildModule } = require('@nomicfoundation/hardhat-ignition/modules'); | ||
|
||
module.exports = buildModule('MessageStorageModule', (m) => { | ||
const MessageContract = m.contract('MessageStorage'); | ||
|
||
return { MessageContract }; | ||
}); |