Skip to content

Commit

Permalink
prefix arweave urls differently for celo networks
Browse files Browse the repository at this point in the history
  • Loading branch information
H34D committed Feb 28, 2023
1 parent f8d0492 commit 76d2704
Show file tree
Hide file tree
Showing 8 changed files with 45 additions and 25 deletions.
2 changes: 1 addition & 1 deletion package.json
Expand Up @@ -35,7 +35,7 @@
"author": "Masa Finance",
"license": "MIT",
"dependencies": {
"@masa-finance/masa-contracts-identity": "^1.3.0",
"@masa-finance/masa-contracts-identity": "^1.3.1",
"@masa-finance/masa-token": "^1.0.0",
"arweave": "~1.12.6",
"axios": "^1.3.2",
Expand Down
16 changes: 9 additions & 7 deletions src/identity/create.ts
Expand Up @@ -21,25 +21,27 @@ export const purchaseIdentityWithSoulName = async (
const extension =
await masa.contracts.instances.SoulNameContract.extension();

const storeMetadataData = await masa.client.soulName.store(
const storedSoulNameMetadata = await masa.client.soulName.store(
`${soulName}${extension}`,
await masa.config.wallet.getAddress(),
duration,
masa.config.network
);

if (storeMetadataData) {
const metadataUrl = `ar://${storeMetadataData.metadataTransaction.id}`;
console.log(`Identity Metadata URL: '${metadataUrl}'`);
if (storedSoulNameMetadata) {
const soulNameMetadataUrl = `${masa.soulName.getSoulNameMetadataPrefix()}${
storedSoulNameMetadata.metadataTransaction.id
}`;
console.log(`Soul Name Metadata URL: '${soulNameMetadataUrl}'`);

const tx = await masa.contracts.identity.purchaseIdentityAndName(
paymentMethod,
soulName,
soulNameLength,
duration,
metadataUrl,
storeMetadataData.authorityAddress,
storeMetadataData.signature
soulNameMetadataUrl,
storedSoulNameMetadata.authorityAddress,
storedSoulNameMetadata.signature
);

console.log(Messages.WaitingToFinalize(tx.hash));
Expand Down
8 changes: 5 additions & 3 deletions src/soul-name/create.ts
Expand Up @@ -42,15 +42,17 @@ const purchaseSoulName = async (
);

if (storeMetadataData) {
const metadataUrl = `ar://${storeMetadataData.metadataTransaction.id}`;
console.log(`Soul Name Metadata URL: '${metadataUrl}'`);
const soulNameMetadataUrl = `${masa.soulName.getSoulNameMetadataPrefix()}${
storeMetadataData.metadataTransaction.id
}`;
console.log(`Soul Name Metadata URL: '${soulNameMetadataUrl}'`);

const tx = await masa.contracts.soulName.purchase(
paymentMethod,
soulName,
soulNameLength,
duration,
metadataUrl,
soulNameMetadataUrl,
storeMetadataData.authorityAddress,
storeMetadataData.signature
);
Expand Down
2 changes: 1 addition & 1 deletion src/soul-name/list.ts
Expand Up @@ -34,7 +34,7 @@ export const loadSoulNameByTokenId = async (
]);

const metadata = (await masa.arweave.loadTransactionData(
tokenUri.replace("ar://", "")
tokenUri.replace(masa.soulName.getSoulNameMetadataPrefix(), "")
)) as ISoulName;

return {
Expand Down
3 changes: 2 additions & 1 deletion src/soul-name/soul-name.ts
Expand Up @@ -10,7 +10,7 @@ import {
} from "./list";
import { sendSoulName } from "./send";
import { verifyByName } from "./verify";
import { validateSoulName } from "./validate";
import { getSoulNameMetadataPrefix, validateSoulName } from "./validate";
import { MasaBase } from "../helpers/masa-base";
import Masa from "../masa";

Expand Down Expand Up @@ -38,4 +38,5 @@ export class MasaSoulName extends MasaBase {
sendSoulName(this.masa, soulName, receiver);
verify = (soulName: string) => verifyByName(this.masa, soulName);
validate = (soulName: string) => validateSoulName(this.masa, soulName);
getSoulNameMetadataPrefix = () => getSoulNameMetadataPrefix(this.masa);
}
7 changes: 7 additions & 0 deletions src/soul-name/validate.ts
Expand Up @@ -5,6 +5,13 @@ export const calculateSoulNameLength = (soulName: string) => {
return new GraphemeSplitter().countGraphemes(soulName);
};

export const getSoulNameMetadataPrefix = (masa: Masa): string => {
// special handling for celo networks
return masa.config.network === "celo" || masa.config.network === "alfajores"
? "https://arweave.net/"
: "ar://";
};

export const validateSoulName = (
masa: Masa,
soulName: string
Expand Down
24 changes: 16 additions & 8 deletions src/soul-name/verify.ts
@@ -1,6 +1,5 @@
import Masa from "../masa";
import { utils } from "ethers";
import { loadSoulNameByName } from "./list";
import { recoverAddress } from "../utils";

const minters = [
Expand Down Expand Up @@ -36,32 +35,41 @@ export const verifyByName = async (
metadataOwnerIsMasaAccount: false,
};

const soulNameInstance = await loadSoulNameByName(masa, soulName);
const soulNameInstance = await masa.soulName.loadSoulNameByName(soulName);

if (soulNameInstance) {
// check if name matches onchain and in the metadata
// check if name matches on-chain and in the metadata
result.nameMatch =
soulNameInstance.tokenDetails.sbtName === soulNameInstance.metadata?.name;

// check if metadata was deployed to arweave by masa
const metadataTxId = soulNameInstance.tokenUri.replace("ar://", "");
const soulNameMetadataTxId = soulNameInstance.tokenUri.replace(
masa.soulName.getSoulNameMetadataPrefix(),
""
);

if (metadataTxId) {
if (soulNameMetadataTxId) {
try {
const metadataTxData = await masa.arweave.transactions.get(
metadataTxId
soulNameMetadataTxId
);
const metadataOwner = await masa.arweave.wallets.ownerToAddress(
metadataTxData.owner
);
result.metadataOwnerIsMasaAccount =
!!metadataOwner && arAccounts.indexOf(metadataOwner) > -1;
} catch {
console.error("Failed to load metadata transaction!", metadataTxId);
console.error(
"Failed to load metadata transaction!",
soulNameMetadataTxId
);
}
}

const imageTxId = soulNameInstance.metadata?.image?.replace("ar://", "");
const imageTxId = soulNameInstance.metadata?.image?.replace(
masa.soulName.getSoulNameMetadataPrefix(),
""
);

if (imageTxId) {
try {
Expand Down
8 changes: 4 additions & 4 deletions yarn.lock
Expand Up @@ -428,10 +428,10 @@
"@jridgewell/resolve-uri" "3.1.0"
"@jridgewell/sourcemap-codec" "1.4.14"

"@masa-finance/masa-contracts-identity@^1.3.0":
version "1.3.0"
resolved "https://registry.yarnpkg.com/@masa-finance/masa-contracts-identity/-/masa-contracts-identity-1.3.0.tgz#76d8387859a2a7902955959bacfb07b9cc8599ac"
integrity sha512-h2fewiEuHDnfddfk2B6vJBK4gkSieqlgnxId8wbywHKmXj6pl7OEK9RowUW8IdjLByAc4pUk1LprjARVPq/gWA==
"@masa-finance/masa-contracts-identity@^1.3.1":
version "1.3.1"
resolved "https://registry.yarnpkg.com/@masa-finance/masa-contracts-identity/-/masa-contracts-identity-1.3.1.tgz#93e897b27b3d979b90c8cdf12acb647d0bbca4cd"
integrity sha512-vJdLV/7R5GlEE/UvMAFehJlXNIo60kFGb9Bq6eRHZ+AnmolUZq2abzAvDJt82whDiBcMbP17C/XLnYawxXSX9g==
dependencies:
ethers "~5.7.2"

Expand Down

0 comments on commit 76d2704

Please sign in to comment.