solidity合约创建

合约可以通过使用new关键字来创建其他合约的实例。

这个过程会执行被创建合约的构造函数(如果存在的话),并返回一个指向新创建合约的地址的引用。

这种方式允许智能合约动态地在区块链上部署新合约,并与它们交互。

通过 new 创建合约

当你在使用new关键字创建一个合约实例时,这个新创建的合约会被部署到以太坊区块链上,并且会有一个独一无二的地址与之对应。

这个地址是合约在区块链上的唯一标识,可以用来与合约进行交互。 也可以单独交互

javascript 复制代码
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract A {
    function getName() public pure returns (string memory) {
        return "success";
    }
}

contract C {
    // 通过new 创建一个合约
    A public ac = new A();

    function getAc() public view returns (address) {
        return address(ac);
    }

    function createA() public {
        A a = new A();
        a.getName();
    }
}

注释事项:

合约地址是通过创建合约的地址和该地址所发起的交易数量(也被称作"nonce")来生成的。

每当一个地址发起一个新的交易,它的nonce就会增加。

这种方式下,合约地址的生成是预定的,即在交易被矿工处理之前,就可以根据发起者地址和其当前的nonce来预测新合约的地址。

相关推荐
Blossom.1185 小时前
基于区块链技术的供应链溯源系统:重塑信任与透明度
服务器·网络·人工智能·目标检测·机器学习·计算机视觉·区块链
CryptoRzz6 小时前
股票数据源对接技术指南:印度尼西亚、印度、韩国
数据库·python·金融·数据分析·区块链
胡耀超8 小时前
探讨零知识证明的数学原理与应用
python·web安全·区块链·密码学·数据安全·零知识证明
数据与人工智能律师18 小时前
虚拟主播肖像权保护,数字时代的法律博弈
大数据·网络·人工智能·算法·区块链
CertiK2 天前
CertiK荣获以太坊基金会两项资助,领跑zkEVM形式化验证
web3·区块链·以太坊
Blossom.1182 天前
Web3.0:互联网的去中心化未来
人工智能·驱动开发·深度学习·web3·去中心化·区块链·交互
2501_910227542 天前
如何使用 Solana Yellowstone gRPC 重新连接和重放插槽
区块链
新讯网3 天前
PinkWallet如何打通数字资产与传统金融的最后一公里
金融·区块链
weixin_387002153 天前
使用GmSSL v3.1.1实现SM2证书认证
算法·安全·区块链·密码学·ssl
学术交流4 天前
2025年金融创新、区块链与信息技术国际会议(FRCIT 2025 2025)
论文阅读·金融·区块链·论文笔记