使用 C# 部署 Solidity 合约
deploy solidity contract with c#
我正在 Ethereum 区块链上开发应用程序。我将 Solidity 用于合约,将 Nethereum c# 库用于连接到合约。我是以太坊的新手,这是我在区块链中的第一个应用程序!!我想先在一个 TESTChain 中部署我的应用程序,
我从 nethereum 网站 Docs 找到了一条私有测试链
(https://nethereum.readthedocs.io/en/latest/nethereum-smartcontrats-gettingstarted/)
使用 Remix 创建了我的简单合约并获得了字节码。
- 正在编写简单的连接代码来部署和连接到合约。
问题是 C# 代码在发送部署合约的请求 后没有回复任何内容。这是我的代码
合同在混音上创建得很好,在 运行 选项卡中它有效
public class DeploymentTest : ContractDeploymentMessage
{
public static string BYTECODE = @"0x....";// removed it because of long string
public DeploymentTest() : base(BYTECODE) { }
}
public async Task ConnectToTest()
{
var url = "https://github.com/Nethereum/TestChains";
var pass = "0xb5b1870957d373ef0eeffecc6e4812c0fd08f554b37b233526acc331bf1544f7";
var acc = new Account(pass);
var chain = new Web3(acc, url);
var deploymentMessage = new DeploymentTest();
var deploymentHandler = chain.Eth.GetContractDeploymentHandler<DeploymentTest>();
// this point just waited and does not return anything
var transactionReceipt = await deploymentHandler.SendRequestAndWaitForReceiptAsync(deploymentMessage);
var contractAddress = transactionReceipt.ContractAddress;
}
任何人都可以帮助我,我不坚持用代码部署,它无论如何都可以发生但是在部署之后我需要连接它并调用一些函数。
谢谢
已编辑
我为 windows 下载了 TESTChain 网络,它工作正常,http:localhost 的默认端口似乎是 8545。但它仍然没有连接到链
var web3test = new Web3(); // also tried new Web3(http://localhost:8545);
var isMining = await web3test.Eth.Mining.IsMining.SendRequestAsync();
var accounts = await web3test.Eth.Accounts.SendRequestAsync();
是我的连接有问题吗?我完全禁用了我的 MacAfee 防火墙。
已编辑 2
我换了我的机器,它在我的另一台笔记本电脑上工作,我找不到问题。我不知道如果我只是卸载 mcaffe 是否可以?
有人知道防火墙问题或其他问题吗?
我发现了问题,它在我的 C# 代码中
调用代码的函数正在等待,
Main()
{
TestConnection().wait(); // this is not proper
}
so I changed it to TestConnection(); and it works
我正在 Ethereum 区块链上开发应用程序。我将 Solidity 用于合约,将 Nethereum c# 库用于连接到合约。我是以太坊的新手,这是我在区块链中的第一个应用程序!!我想先在一个 TESTChain 中部署我的应用程序,
我从 nethereum 网站 Docs 找到了一条私有测试链 (https://nethereum.readthedocs.io/en/latest/nethereum-smartcontrats-gettingstarted/)
使用 Remix 创建了我的简单合约并获得了字节码。
- 正在编写简单的连接代码来部署和连接到合约。
问题是 C# 代码在发送部署合约的请求 后没有回复任何内容。这是我的代码
合同在混音上创建得很好,在 运行 选项卡中它有效
public class DeploymentTest : ContractDeploymentMessage
{
public static string BYTECODE = @"0x....";// removed it because of long string
public DeploymentTest() : base(BYTECODE) { }
}
public async Task ConnectToTest()
{
var url = "https://github.com/Nethereum/TestChains";
var pass = "0xb5b1870957d373ef0eeffecc6e4812c0fd08f554b37b233526acc331bf1544f7";
var acc = new Account(pass);
var chain = new Web3(acc, url);
var deploymentMessage = new DeploymentTest();
var deploymentHandler = chain.Eth.GetContractDeploymentHandler<DeploymentTest>();
// this point just waited and does not return anything
var transactionReceipt = await deploymentHandler.SendRequestAndWaitForReceiptAsync(deploymentMessage);
var contractAddress = transactionReceipt.ContractAddress;
}
任何人都可以帮助我,我不坚持用代码部署,它无论如何都可以发生但是在部署之后我需要连接它并调用一些函数。 谢谢
已编辑
我为 windows 下载了 TESTChain 网络,它工作正常,http:localhost 的默认端口似乎是 8545。但它仍然没有连接到链
var web3test = new Web3(); // also tried new Web3(http://localhost:8545);
var isMining = await web3test.Eth.Mining.IsMining.SendRequestAsync();
var accounts = await web3test.Eth.Accounts.SendRequestAsync();
是我的连接有问题吗?我完全禁用了我的 MacAfee 防火墙。
已编辑 2
我换了我的机器,它在我的另一台笔记本电脑上工作,我找不到问题。我不知道如果我只是卸载 mcaffe 是否可以? 有人知道防火墙问题或其他问题吗?
我发现了问题,它在我的 C# 代码中 调用代码的函数正在等待,
Main()
{
TestConnection().wait(); // this is not proper
}
so I changed it to TestConnection(); and it works