您现在的位置是:首页 >其他 >智能合约形象化通俗易懂的终极解释(不懂只怨你没往这里看!)网站首页其他

智能合约形象化通俗易懂的终极解释(不懂只怨你没往这里看!)

socketyc 2024-06-17 11:28:16
简介智能合约形象化通俗易懂的终极解释(不懂只怨你没往这里看!)

1.智能合约就是在“服务器“(区块链网络)上保存的一个类。

【当拥有者上传,区块链网络就会创建影实例化合约,构造函数在此时被实例化,而且只运行这一次】

2.调用者在本地根据智能合约的abi在【本地】模拟出一个本地的类并实例话!

3.然后本地js可以像操作本地创建的对象一样来操作各种方法和属性。

4.事件不需要代码,仅仅是把对应的参数打印到区块链日志里,供查询(相当于打印参数值到控制台)

solidity函数中msg.sender获取当前函数调用者的钱包地址

总结:要操作代币授权,需要用代币合约的地址或者类型来实例话一个代币合约实例,用这个实例去执行具体的转移或者授权操作(也就是调用代币合约的函数)

例子:

const abi = [{"inputs":[],"name":"myFunction","outputs":[],"stateMutability":"nonpayable","type":"function"}];

const contractAddress = '0x1234567890123456789012345678901234567890'; const myContract = new web3.eth.Contract(abi, contractAddress);

await myContract.methods.myFunction().send({ from: '0x123...', gas: 100000 });

像这个很明显调用具体的方法后面还带了个【send】,就更能说明就是本地虚拟化出一个类(智能合约)的对象,然后带上操作{调用方法},最后发送出去!

注意:

1.整个用户调用,执行合约代码的过程是这样的:

用户调用-》钱包客户端处理(例如弹出授权申请提示框)+区块链确认-》执行合约(类)相应的方法。

即是:每次调用就是一次交易,都是先在区块链网络上确认了交易,然后才会去执行相应的方法!

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。