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

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

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

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

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

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

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

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

2.谁调用了这个代币合约实例,谁就是发送者,如果用户直接用js调用,那么钱包地址就是发送者,如果在某个合约里调用了这个代币合约实例,那么这个调用的合约就是发送者【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.整个用户调用,执行合约代码的过程是这样的:

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

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值