xclud / web3dart

Ethereum library, written in Dart.
https://pub.dev/packages/web3dart
MIT License
170 stars 94 forks source link

How to Deploy A Smart Contract Using Web3Dart #110

Open Asadu43 opened 1 year ago

Asadu43 commented 1 year ago

In Javascript We Deploy Smart contract something like that

let contract = new web3.eth.Contract(DonactionsAbi); let deploy = await contract.deploy({ data: DonactionsByteCode, arguments: [address, Name] });

I just want to know how to Deploy smart contract in Dart

redDwarf03 commented 12 months ago

perhaps try something like that. I hope it's a lead

import 'dart:convert';
import 'dart:developer';
import 'package:flutter/services.dart';
import 'package:http/http.dart';
import 'package:web3dart/web3dart.dart';

class Contract {
  final String apiUrl = 'http://127.0.0.1:7545';

  Future<void> deploy(
    String privateKey,
    String address,
    String name,
  }) async {
    final privateKey = 'xxxxxxx';

    final web3Client = Web3Client(apiUrl, Client());
    final credentials = EthPrivateKey.fromHex(privateKey);

    final abiStringFile =
        await rootBundle.loadString('truffle/build/contracts/HTLC_ETH.json');
    final jsonAbi = jsonDecode(abiStringFile);
    final contract = DeployedContract(
      jsonAbi,
      EthereumAddress.fromHex(address),
    );

    final transaction = Transaction.callContract(
      contract: contract,
      function: contract.function('constructor'),
      parameters: [
        EthereumAddress.fromHex(address),
        name,
      ],
    );

    final transactionHash = await web3Client.sendTransaction(
      credentials,
      transaction,
    );
    final receipt = await web3Client.getTransactionReceipt(transactionHash);

    log('Contract deployed at ${receipt!.contractAddress!.hex}');
  }
}