Can not deploy `SmartContract` in 0.18.0
Pfed-prog opened this issue · comments
Nothing Works and I do not know why.
working code in 0.17.0
export async function deployNFTContract(
pkSender: PrivateKey,
pkNFTContract: PrivateKey,
proofsEnabled: boolean = true,
live: boolean = true
): Promise<TxStatus> {
let verificationKey: VerificationKey | undefined;
if (proofsEnabled) {
({ verificationKey } = await NFTContract.compile());
}
const zkAppAddress: PublicKey = pkNFTContract.toPublicKey();
const zkAppInstance: NFTContract = new NFTContract(zkAppAddress);
const pubKey: PublicKey = pkSender.toPublicKey();
const deployTxnOptions: TxOptions = createTxOptions(pubKey, live);
const deployTx: Transaction = await Mina.transaction(deployTxnOptions, () => {
AccountUpdate.fundNewAccount(pubKey);
zkAppInstance.deploy({ verificationKey, zkappKey: pkNFTContract });
});
const txStatus: TxStatus = await sendWaitTx(deployTx, [pkSender], live);
return txStatus;
}
Should I keep { verificationKey, zkappKey: pkNFTContract }
in deploy ?
Should I wrap deploy in async/await ?
![image](https://private-user-images.githubusercontent.com/66903336/324211268-dc6eb0a6-8ac4-4222-8ada-4e2b69966e59.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIyMzc2NjAsIm5iZiI6MTcyMjIzNzM2MCwicGF0aCI6Ii82NjkwMzMzNi8zMjQyMTEyNjgtZGM2ZWIwYTYtOGFjNC00MjIyLThhZGEtNGUyYjY5OTY2ZTU5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI5VDA3MTYwMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTk4Y2E2NjcwYTE2Y2FjZGFmYmRjM2IzNzg5MmU2NGIxOTFjYmYxODA3MDkwODdjZjA4MWMwMmZlODk0MWY3NGYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.ZpzxUkdZLCTJFuq2jktC7PjvsLQYXdoRqOPq2mBkFVs)
zkappKey moved to sign
everything is wrapped in async/await
export async function deployNFTContract(
pkSender: PrivateKey,
pkNFTContract: PrivateKey,
compile: boolean = true,
live: boolean = true
): Promise<TxStatus> {
let nftContractverificationKey: VerificationKey | undefined;
if (compile) {
const { verificationKey } = await NFTContract.compile();
nftContractverificationKey = verificationKey;
}
const zkAppAddress: PublicKey = pkNFTContract.toPublicKey();
const zkAppInstance: NFTContract = new NFTContract(zkAppAddress);
const pubKey: PublicKey = pkSender.toPublicKey();
const deployTxnOptions: TxOptions = createTxOptions(pubKey, live);
const deployTx: Transaction = await Mina.transaction(
deployTxnOptions,
async () => {
AccountUpdate.fundNewAccount(pubKey);
await zkAppInstance.deploy({
verificationKey: nftContractverificationKey,
});
}
);
const txStatus: TxStatus = await sendWaitTx(
deployTx,
[pkSender, pkNFTContract],
live
);
return txStatus;
}