{"content":{"title":"论FISCO BCOS智能合约与Ethereum智能合约关于view的区别","body":"view是Solidity智能合约中的一种修饰符，但是在不同的区块链底层平台中，也会具有不同的作用。FISCO BCOS平台支持Solidity智能合约以及预编译合约。而FISCO BCOS的Solidity合约中的view与Ethereum智能合约具有明显的区别，下面进行演示。\r\n首先，为FISCO BCOS平台配置账户：0x294d2e4d2144dfaef34a555a2b07a610c718dd96\r\n![image.png](https://img.learnblockchain.cn/attachments/2024/03/RnnNuPnZ65fedbfa5557e.png)\r\n然后编写测试代码如图所示：\r\n\r\n![image.png](https://img.learnblockchain.cn/attachments/2024/03/pQFphpqO65fedc8821346.png)\r\n然后保存编译并部署合约，基于配置的账户调用getAddress接口：\r\n\r\n\r\n![image.png](https://img.learnblockchain.cn/attachments/2024/03/QDfm4FwX65fedd3ef36a9.png)\r\n此时，返回值本应该是账户的地址，即0x294d2e4d2144dfaef34a555a2b07a610c718dd96，但是点击确定后，执行结果如图所示，发现是address(0)，这是为什么呢？\r\n\r\n![image.png](https://img.learnblockchain.cn/attachments/2024/03/TemfGFMI65fedd560bf6b.png)\r\n原因就在于view的使用，下面去掉view，测试一下：\r\n\r\n![image.png](https://img.learnblockchain.cn/attachments/2024/03/eHtqHUxi65feddd7934d1.png)\r\n\r\n如图所示，发现可以正确返回执行交易用户的地址。\r\n![image.png](https://img.learnblockchain.cn/attachments/2024/03/i5TcpnQQ65feddf9a83f9.png)\r\n根据笔者的经验，在开发FISCO BCOS的Solidity智能合约时，在view和pure的使用上需要慎重，一旦出现这种错误，将很难debug。"},"author":{"user":"https://learnblockchain.cn/people/11990","address":null},"history":null,"timestamp":1711202189,"version":1}