forked from LaconicNetwork/icns-frontend
WIP: test execute
This commit is contained in:
parent
7ae09a0c11
commit
de2a90457e
@ -5,10 +5,7 @@ import { useEffect, useState } from "react";
|
||||
import Image from "next/image";
|
||||
|
||||
// Types
|
||||
import {
|
||||
IcnsVerificationResponse,
|
||||
TwitterAuthInfoResponse,
|
||||
} from "../../types";
|
||||
import { IcnsVerificationResponse, TwitterAuthInfoResponse } from "../../types";
|
||||
import { request } from "../../utils/url";
|
||||
|
||||
// Styles
|
||||
@ -21,10 +18,17 @@ import { SkeletonChainList } from "../../components/skeleton";
|
||||
|
||||
import { PrimaryButton } from "../../components/primary-button";
|
||||
import { AccountInfos } from "../../config";
|
||||
import {
|
||||
TwitterProfile,
|
||||
} from "../../components/twitter-profile";
|
||||
import { TwitterProfile } from "../../components/twitter-profile";
|
||||
import { ChainList } from "../../components/chain-list";
|
||||
import {
|
||||
getKeplrFromWindow,
|
||||
KeplrWallet,
|
||||
makeCosmwasmExecMsg,
|
||||
sendMsgs,
|
||||
simulateMsgs,
|
||||
} from "../../wallets";
|
||||
import { TendermintTxTracer } from "@keplr-wallet/cosmos";
|
||||
import { Buffer } from "buffer/";
|
||||
|
||||
export default function VerificationPage() {
|
||||
const [twitterAuthInfo, setTwitterAuthInfo] =
|
||||
@ -46,20 +50,146 @@ export default function VerificationPage() {
|
||||
|
||||
setTwitterAuthInfo(newTwitterAuthInfo);
|
||||
|
||||
const icnsVerificationList = (
|
||||
await request<IcnsVerificationResponse>("/api/icns-verification", {
|
||||
method: "post",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
body: JSON.stringify({
|
||||
claimer: "osmo1y5mm5nj5m8ttddt5ccspek6xgyyavehrkak7gq",
|
||||
authToken: newTwitterAuthInfo.accessToken,
|
||||
}),
|
||||
})
|
||||
).verificationList;
|
||||
await (async () => {
|
||||
const keplr = await getKeplrFromWindow();
|
||||
if (keplr) {
|
||||
const wallet = new KeplrWallet(keplr);
|
||||
|
||||
console.log(icnsVerificationList);
|
||||
const mainChainId = "osmo-test-4";
|
||||
const chainIds = (await wallet.getChainInfosWithoutEndpoints()).map(
|
||||
(c) => c.chainId,
|
||||
);
|
||||
|
||||
await wallet.init(chainIds);
|
||||
|
||||
const key = await wallet.getKey(mainChainId);
|
||||
|
||||
const icnsVerificationList = (
|
||||
await request<IcnsVerificationResponse>(
|
||||
"/api/icns-verification",
|
||||
{
|
||||
method: "post",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
body: JSON.stringify({
|
||||
claimer: key.bech32Address,
|
||||
authToken: newTwitterAuthInfo.accessToken,
|
||||
}),
|
||||
},
|
||||
)
|
||||
).verificationList;
|
||||
|
||||
console.log(icnsVerificationList);
|
||||
|
||||
const registerMsg = makeCosmwasmExecMsg(
|
||||
key.bech32Address,
|
||||
"osmo1u3sm9029430ca7xqz5afx4n0d42mgs2w97syex23g3vz2m673hxsv905sn",
|
||||
{
|
||||
claim: {
|
||||
name: newTwitterAuthInfo.username,
|
||||
verifying_msg:
|
||||
icnsVerificationList[0].status === "fulfilled"
|
||||
? icnsVerificationList[0].value.data.verifying_msg
|
||||
: "",
|
||||
verifications: icnsVerificationList.map((verification) => {
|
||||
if (verification.status === "fulfilled") {
|
||||
return {
|
||||
public_key: verification.value.data.public_key,
|
||||
signature: verification.value.data.signature,
|
||||
};
|
||||
}
|
||||
}),
|
||||
},
|
||||
},
|
||||
[
|
||||
{
|
||||
denom: "uosmo",
|
||||
amount: "500000",
|
||||
},
|
||||
],
|
||||
);
|
||||
|
||||
const test = await wallet.signICNSAdr36(
|
||||
mainChainId,
|
||||
"osmo1q2qpencrnnlamwalxt6tac2ytl35z5jejn0v4frnp6jff7gwp37sjcnhu5",
|
||||
key.bech32Address,
|
||||
newTwitterAuthInfo.username,
|
||||
chainIds,
|
||||
);
|
||||
|
||||
const addressMsgs = test.map((adr36Info) => {
|
||||
console.log(adr36Info);
|
||||
|
||||
return makeCosmwasmExecMsg(
|
||||
key.bech32Address,
|
||||
"osmo1q2qpencrnnlamwalxt6tac2ytl35z5jejn0v4frnp6jff7gwp37sjcnhu5",
|
||||
{
|
||||
set_record: {
|
||||
name: newTwitterAuthInfo.username,
|
||||
bech32_prefix: adr36Info.bech32Prefix,
|
||||
adr36_info: {
|
||||
signer_bech32_address: adr36Info.bech32Address,
|
||||
address_hash: adr36Info.addressHash,
|
||||
pub_key: Buffer.from(adr36Info.pubKey).toString("base64"),
|
||||
signature: Buffer.from(adr36Info.signature).toString(
|
||||
"base64",
|
||||
),
|
||||
signature_salt: adr36Info.signatureSalt.toString(),
|
||||
},
|
||||
},
|
||||
},
|
||||
[],
|
||||
);
|
||||
});
|
||||
|
||||
const aminoMsgs = [registerMsg.amino];
|
||||
const protoMsgs = [registerMsg.proto];
|
||||
for (const addressMsg of addressMsgs) {
|
||||
aminoMsgs.push(addressMsg.amino);
|
||||
protoMsgs.push(addressMsg.proto);
|
||||
}
|
||||
|
||||
const chainInfo = {
|
||||
chainId: mainChainId,
|
||||
rest: "https://lcd.testnet.osmosis.zone",
|
||||
};
|
||||
|
||||
const simulated = await simulateMsgs(
|
||||
chainInfo,
|
||||
key.bech32Address,
|
||||
{
|
||||
proto: protoMsgs,
|
||||
},
|
||||
{
|
||||
amount: [],
|
||||
},
|
||||
);
|
||||
|
||||
const txHash = await sendMsgs(
|
||||
wallet,
|
||||
chainInfo,
|
||||
key.bech32Address,
|
||||
{
|
||||
amino: aminoMsgs,
|
||||
proto: protoMsgs,
|
||||
},
|
||||
{
|
||||
amount: [],
|
||||
gas: Math.floor(simulated.gasUsed * 1.5).toString(),
|
||||
},
|
||||
);
|
||||
|
||||
const txTracer = new TendermintTxTracer(
|
||||
"https://rpc.testnet.osmosis.zone",
|
||||
"/websocket",
|
||||
);
|
||||
|
||||
const result = await txTracer.traceTx(txHash);
|
||||
|
||||
console.log(result);
|
||||
}
|
||||
})();
|
||||
|
||||
setIsLoading(false);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user