mirror of
https://github.com/emo2007/block-accounting.git
synced 2025-01-18 15:36:27 +00:00
config and dynamic generation of contracts
This commit is contained in:
parent
5d5443b8ac
commit
01371286d0
@ -14,6 +14,7 @@ const config = {
|
||||
paths: {
|
||||
sources: './src/hardhat/contracts',
|
||||
// tests: './src/hardhat/test',
|
||||
ignition: './src/hardhat/ignition',
|
||||
cache: './src/hardhat/cache',
|
||||
artifacts: './src/hardhat/artifacts',
|
||||
},
|
||||
|
36
chain-api/package-lock.json
generated
36
chain-api/package-lock.json
generated
@ -11,6 +11,7 @@
|
||||
"dependencies": {
|
||||
"@chainlink/contracts": "^1.1.0",
|
||||
"@nestjs/common": "^10.0.0",
|
||||
"@nestjs/config": "^3.2.2",
|
||||
"@nestjs/core": "^10.0.0",
|
||||
"@nestjs/mapped-types": "*",
|
||||
"@nestjs/platform-express": "^10.0.0",
|
||||
@ -3595,6 +3596,33 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@nestjs/config": {
|
||||
"version": "3.2.2",
|
||||
"resolved": "https://registry.npmjs.org/@nestjs/config/-/config-3.2.2.tgz",
|
||||
"integrity": "sha512-vGICPOui5vE6kPz1iwQ7oCnp3qWgqxldPmBQ9onkVoKlBtyc83KJCr7CjuVtf4OdovMAVcux1d8Q6jglU2ZphA==",
|
||||
"dependencies": {
|
||||
"dotenv": "16.4.5",
|
||||
"dotenv-expand": "10.0.0",
|
||||
"lodash": "4.17.21",
|
||||
"uuid": "9.0.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0",
|
||||
"rxjs": "^7.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@nestjs/config/node_modules/uuid": {
|
||||
"version": "9.0.1",
|
||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
|
||||
"integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
|
||||
"funding": [
|
||||
"https://github.com/sponsors/broofa",
|
||||
"https://github.com/sponsors/ctavan"
|
||||
],
|
||||
"bin": {
|
||||
"uuid": "dist/bin/uuid"
|
||||
}
|
||||
},
|
||||
"node_modules/@nestjs/core": {
|
||||
"version": "10.3.8",
|
||||
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-10.3.8.tgz",
|
||||
@ -7537,6 +7565,14 @@
|
||||
"url": "https://dotenvx.com"
|
||||
}
|
||||
},
|
||||
"node_modules/dotenv-expand": {
|
||||
"version": "10.0.0",
|
||||
"resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz",
|
||||
"integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==",
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/eastasianwidth": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
|
||||
|
@ -22,6 +22,7 @@
|
||||
"dependencies": {
|
||||
"@chainlink/contracts": "^1.1.0",
|
||||
"@nestjs/common": "^10.0.0",
|
||||
"@nestjs/config": "^3.2.2",
|
||||
"@nestjs/core": "^10.0.0",
|
||||
"@nestjs/mapped-types": "*",
|
||||
"@nestjs/platform-express": "^10.0.0",
|
||||
|
@ -3,9 +3,16 @@ import { AppController } from './app.controller';
|
||||
import { AppService } from './app.service';
|
||||
import { ContractFactoryModule } from './contract-factory/contract-factory.module';
|
||||
import { ContractInteractModule } from './contract-interact/contract-interact.module';
|
||||
import { ConfigModule } from '@nestjs/config';
|
||||
|
||||
@Module({
|
||||
imports: [ContractFactoryModule, ContractInteractModule],
|
||||
imports: [
|
||||
ConfigModule.forRoot({
|
||||
isGlobal: true,
|
||||
}),
|
||||
ContractFactoryModule,
|
||||
ContractInteractModule,
|
||||
],
|
||||
controllers: [AppController],
|
||||
providers: [AppService],
|
||||
})
|
||||
|
@ -1,25 +1,17 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
pragma solidity ^0.8.7;
|
||||
|
||||
import {AggregatorV3Interface} from "@chainlink/contracts/src/v0.8/shared/interfaces/AggregatorV3Interface.sol";
|
||||
import {AggregatorV3Interface} from '@chainlink/contracts/src/v0.8/shared/interfaces/AggregatorV3Interface.sol';
|
||||
|
||||
contract Salaries {
|
||||
AggregatorV3Interface internal dataFeed;
|
||||
|
||||
/**
|
||||
* Network: Sepolia
|
||||
* Aggregator: BTC/USD
|
||||
* Address: 0x1b44F3514812d835EB1BDB0acB33d3fA3351Ee43
|
||||
*/
|
||||
constructor() {
|
||||
dataFeed = AggregatorV3Interface(
|
||||
0xF0d50568e3A7e8259E16663972b11910F89BD8e7
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the latest answer.
|
||||
*/
|
||||
function getChainlinkDataFeedLatestAnswer() public view returns (int) {
|
||||
// prettier-ignore
|
||||
(
|
||||
|
@ -1,28 +1,39 @@
|
||||
const hre = require('hardhat');
|
||||
// import hre from 'hardhat';
|
||||
// const hre = require('hardhat');
|
||||
import * as hre from 'hardhat';
|
||||
import { Injectable } from '@nestjs/common';
|
||||
|
||||
import { ethers } from 'ethers';
|
||||
import { ConfigService } from '@nestjs/config';
|
||||
@Injectable()
|
||||
export class HardhatService {
|
||||
constructor(private readonly configService: ConfigService) {}
|
||||
async deploySalaryContract() {
|
||||
// const { salaryAmount, userAddress } = req.body;
|
||||
const provider = new ethers.JsonRpcProvider(
|
||||
'https://polygon-amoy.g.alchemy.com/v2/pEtFFy_Qr_NrM1vMnlzSXmYXkozVNzLy',
|
||||
80002,
|
||||
);
|
||||
|
||||
// // Read the Solidity contract template file
|
||||
// const solidityCode = readSolidityTemplate(); // Implement this function to read the Solidity template file
|
||||
const salary = await hre.artifacts.readArtifact('Salaries');
|
||||
const abi = salary.abi;
|
||||
console.log('🚀 ~ HardhatService ~ deploySalaryContract ~ abi:', abi);
|
||||
const bytecode = salary.deployedBytecode;
|
||||
console.log(
|
||||
'🚀 ~ HardhatService ~ deploySalaryContract ~ bytecode:',
|
||||
bytecode,
|
||||
);
|
||||
const signer = new ethers.Wallet(
|
||||
this.configService.getOrThrow('POLYGON_PK'),
|
||||
provider,
|
||||
);
|
||||
|
||||
// // Replace placeholders in the Solidity contract template with provided values
|
||||
// const finalSolidityCode = replacePlaceholders(solidityCode, {
|
||||
// salaryAmount,
|
||||
// userAddress,
|
||||
// });
|
||||
const salaryContract = new ethers.ContractFactory(
|
||||
abi,
|
||||
salary.bytecode,
|
||||
signer,
|
||||
);
|
||||
|
||||
// // Compile the Solidity contract
|
||||
// const compiledContract = await compileSolidity(finalSolidityCode);
|
||||
const myContract = await salaryContract.deploy();
|
||||
await myContract.waitForDeployment();
|
||||
|
||||
// // Deploy the contract
|
||||
// const deployedContract = await deployContract(compiledContract);
|
||||
const salaryC = await hre.ethers.getContractFactory('Salaries');
|
||||
const myContract = await salaryC.deploy();
|
||||
console.log(
|
||||
'🚀 ~ HardhatService ~ deploySalaryContract ~ myContract:',
|
||||
myContract,
|
||||
|
@ -16,6 +16,8 @@
|
||||
"noImplicitAny": false,
|
||||
"strictBindCallApply": false,
|
||||
"forceConsistentCasingInFileNames": false,
|
||||
"noFallthroughCasesInSwitch": false
|
||||
}
|
||||
"noFallthroughCasesInSwitch": false,
|
||||
"resolveJsonModule": true
|
||||
},
|
||||
"include": ["src/**/*", "src/**/*.json"]
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user