在以太坊生态中,智能合约的字节码最终会部署到哪个组件上?
以太坊钱包
以太坊虚拟机(EVM)
Web3.js库
Ganache测试链
Solidity语言中,用于定义合约内可被外部账户或其他合约调用的函数的关键字是?
internal
private
public
view
以下哪些是部署智能合约到以太坊主网的必要步骤?(多选)
编写并编译Solidity合约
获取测试网ETH
获取主网ETH以支付Gas费
使用Remix在线IDE进行部署
通过MetaMask等钱包连接主网并发送交易
在Truffle框架中,用于定义部署脚本和迁移合约的文件通常存放在哪个目录下?
以下哪个Gas优化技巧可以有效减少合约部署和函数调用的成本?
使用更长的变量名
尽可能使用`storage`变量
使用`memory`或`calldata`替代不必要的`storage`读写
在合约中嵌入大型字符串常量
以下关于智能合约安全性的描述,哪些是正确的?(多选)
使用`tx.origin`进行身份验证是安全的
重入攻击可以通过“检查-生效-交互”模式来防范
溢出漏洞在Solidity 0.8.x版本后默认被编译器防护
公开的函数参数不需要进行任何验证
在Hardhat项目中,通常使用哪个命令来运行测试脚本?
为了将智能合约的接口信息(ABI)提供给前端DApp使用,通常需要生成什么文件?
.sol文件
.env文件
.json文件
.exe文件
使用Infura或Alchemy等服务的主要目的是什么?
编译Solidity合约
免费获取大量主网ETH
提供一个无需自己运行节点的区块链API访问端点
进行本地合约测试
以下哪些是常见的智能合约开发与测试框架?(多选)
Truffle
React
Hardhat
Foundry
Vue.js
在Solidity中,用于声明一个函数不会修改合约状态(即只读取数据)的关键字是什么?
当使用MetaMask部署合约时,交易被“确认”意味着什么?
合约代码已通过编译
交易已被广播到网络但可能失败
交易已被矿工打包进区块并达成网络共识
用户已签名但未发送交易
请写出在Remix IDE中,将合约部署到JavaScript VM(本地模拟环境)后,用于与合约函数交互的区域通常叫什么?
以下哪项不是智能合约升级的常见模式?
数据分离与代理模式
函数签名重写
永久冻结合约
合约迁移(部署新版本并引导用户使用)
在编写用于生产环境的智能合约时,以下哪些是推荐的安全实践?(多选)
在测试网上充分测试
邀请第三方审计
使用未经验证的第三方库
忽略Gas优化
编写全面的单元测试和集成测试
在Truffle项目的配置文件中,用于指定目标网络(如主网、测试网)连接信息的配置项是什么?
ERC-20标准中,用于查询代币总供应量的函数名称是?
balanceOf
transfer
totalSupply
approve
部署合约时,如果交易因“Out of Gas”而失败,通常意味着什么?