Skip to content

Instantly share code, notes, and snippets.

@critesjosh
Created May 19, 2022 14:45
Show Gist options
  • Select an option

  • Save critesjosh/1e11e2ea5e67ad1dce2b1701d1a2c1ae to your computer and use it in GitHub Desktop.

Select an option

Save critesjosh/1e11e2ea5e67ad1dce2b1701d1a2c1ae to your computer and use it in GitHub Desktop.
[WIP] broken setup script for the aztec sdk
import {
AccountId,
AztecSdk,
createAztecSdk,
WalletProvider,
EthersAdapter,
EthAddress,
EthereumProvider,
SchnorrSigner,
TxSettlementTime,
Web3Signer,
} from "@aztec/sdk";
import { JsonRpcProvider } from "@ethersproject/providers";
import { depositTokensToAztec, depositEthToAztec } from "./shield";
import { sendETH } from "./transfer";
import { ethers, Wallet, providers } from "ethers";
require("dotenv").config();
const createDebug = require("debug");
const debug = createDebug("bb:demo");
const ETHEREUM_ADDRESS = EthAddress.fromString(
ethers.utils.computeAddress(
Buffer.from(process.env.ETHEREUM_PRIVATE_KEY, "hex")
)
);
const AZTEC_PRIVATE_KEY = Buffer.from(process.env.AZTEC_PRIVATE_KEY, "hex");
const ethersProvider = new JsonRpcProvider(process.env.MAINNET_FORK_RPC);
const ethereumProvider: EthereumProvider = new EthersAdapter(ethersProvider);
const walletProvider = new WalletProvider(ethereumProvider);
walletProvider.addAccount(Buffer.from(process.env.ETHEREUM_PRIVATE_KEY, "hex"));
let sdk: AztecSdk;
const main = async () => {
sdk = await createAztecSdk(walletProvider, {
serverUrl: process.env.MAINNET_FORK_ROLLUP,
pollInterval: 1000,
memoryDb: true,
minConfirmation: 1, // ETH block confirmations
});
await sdk.run();
await sdk.awaitSynchronised();
const { privateKey } = await createSigningKeys(ethereumProvider, sdk);
const user = await sdk.addUser(privateKey);
const signer: SchnorrSigner = await sdk.createSchnorrSigner(privateKey);
const depositTokenQuantity: bigint = ethers.utils
.parseEther("0.01")
.toBigInt();
const depositSettlementTime = TxSettlementTime.NEXT_ROLLUP;
await depositEthToAztec(
ETHEREUM_ADDRESS,
user.id,
depositTokenQuantity,
depositSettlementTime,
sdk,
signer
);
};
main();
const createSigningKeys = async (
provider: WalletProvider,
sdk: AztecSdk
) => {
const message = `Sign this message to generate your Aztec Spending Key. This key lets the application spend your funds on Aztec.\n\nIMPORTANT: Only sign this message if you trust the application.`;
const ethAddress = provider.getAccount(0);
// const signer = new Web3Signer(provider);
// const privateKey = (
// await signer.signPersonalMessage(message, ethAddress)
// ).slice(0, 32);
const privateKey = (
await provider.request({
method: "personal_sign",
params: [message, ethAddress],
})
).slice(0, 32);
const publicKey = await sdk.derivePublicKey(privateKey);
return { privateKey, publicKey };
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment