UNPKG

moon-did-resolver

Version:

Resolve DID documents for ethereum addresses and public keys

172 lines (141 loc) 5.71 kB
// @ts-nocheck import { concat, getAddress, getBytes, keccak256, toBeHex, toUtf8Bytes, zeroPadValue } from 'ethers' import MoonbeamDIDRegistry from '../config/MoonbeamDIDRegistry.json' import { MoonDidController } from '../controller' import { MESSAGE_PREFIX, address } from '../helpers' import { randomPrivatePublicKeys } from './testUtils' import { ethers } from 'ethers' import web3jsRaw from './web3Raw' import { Resolver } from 'did-resolver' import { MoonDidResolver, getResolver } from '../resolver' const ABI = MoonbeamDIDRegistry.abi // const _CONTRACT_ADDRESS = '0x5fbdb2315678afecb367f032d93f642f64180aa3' // Local Node // const _PROVIDER = 'http://127.0.0.1:8545/' // const ETHER_ACC = '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266' // Local Node // const privateKeyString = 'ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80' // const privateKey = Buffer.from(privateKeyString, 'hex') const _CONTRACT_ADDRESS = '0x1205411db2cC925253A57299f3313075DDD48439' // Moonbeam Alpha const _PROVIDER = 'https://rpc.api.moonbase.moonbeam.network' const ETHER_ACC = '0x497A68118e2a2aCA1d9B92452694E2bb063B1F29' const privateKeyString = '594ce39f93abf5494f3c324500dd318b39f5161df082387edf6a20d0ff90d960' const privateKey = Buffer.from(privateKeyString, 'hex') const privateKey2 = Buffer.from('9ecbafaecca5493c744ae471ffc96c6b639575aad0368dd801c073f4df1d084a', 'hex') const provider = new ethers.JsonRpcProvider(_PROVIDER, 1287) // const provider = new ethers.JsonRpcProvider(_PROVIDER) const _CONTRACT = new ethers.Contract(_CONTRACT_ADDRESS, ABI, provider) export const resolver = new Resolver( getResolver({ name: 'alpha', provider, registry: _CONTRACT, }) ) const gasLimit = 30000000 jest.setTimeout(100000) describe('moonbeam-alpha contract', () => { it('should create a new DID', async () => { //Using the MoonDidController const { privKey: OriginalOwnerKey, address: OwnerAddress, pubKey: OriginalOwner, } = await randomPrivatePublicKeys(_PROVIDER) const identifier = `did:moon:alpha:${OwnerAddress}` const signer = new ethers.Wallet(privateKeyString, provider) const moonController = new MoonDidController( identifier, undefined, signer, undefined, undefined, undefined, _CONTRACT_ADDRESS, false ) const hash = await moonController.createChangeOwnerHash(ETHER_ACC) const signature = OriginalOwnerKey.sign(hash) try { const res = await moonController.changeOwnerSigned(ETHER_ACC, { sigV: signature.v, sigR: signature.r, sigS: signature.s, }) } catch (error) { console.log(error) } //Using the Web3Raw // const W3JSR = new web3jsRaw(_PROVIDER) // await W3JSR.getWeb3(ABI, _CONTRACT_ADDRESS) // const { privateKey: OriginalOwnerPrivateKey, address: OwnerAddress } = await W3JSR.createNewAccount() // const OriginalOwnerKey = new ethers.SigningKey(OriginalOwnerPrivateKey) // // let result = await W3JSR.ContractInstance.methods.identityOwner('0x35252b703078f9E9E96ffbC739372fE5eF6aebAF').call() // // console.log(result) // async function getPaddedNonceCompatibility(attribute = false): Promise<string> { // let nonceKey // if (true && attribute) { // nonceKey = OwnerAddress // } else { // // @ts-ignore // nonceKey = await W3JSR.ContractInstance.methods.identityOwner(getAddress(OwnerAddress)).call() // } // // @ts-ignore // return zeroPadValue(toBeHex(await W3JSR.ContractInstance.methods.nonce(nonceKey).call()), 32) // } // async function createChangeOwnerHash(newOwner: address) { // const paddedNonce = await getPaddedNonceCompatibility() // const dataToHash = concat([ // MESSAGE_PREFIX, // _CONTRACT_ADDRESS, // paddedNonce, // OwnerAddress, // getBytes(concat([toUtf8Bytes('changeOwner'), newOwner])), // ]) // return keccak256(dataToHash) // } // const hash = await createChangeOwnerHash(ETHER_ACC) // const signature = OriginalOwnerKey.sign(hash) // var functionName = 'changeOwnerSigned' // var params = [OwnerAddress, signature.v, signature.r, signature.s, ETHER_ACC] // try { // const result = await W3JSR.prepareSignSend( // ABI, // _CONTRACT_ADDRESS, // functionName, // ETHER_ACC, // privateKey, // '0x00', // params, // gasLimit // ) // console.log(result) // } catch (error) { // console.log(error) // } }) it('should add EcdsaSecp256k1VerificationKey2019 signing key signed', async () => { const signer = new ethers.Wallet(privateKeyString, provider) const publicKey = new ethers.SigningKey(privateKey).publicKey const identifier = 'did:moon:alpha:0x02ac1f42b5a09ff8eb5de100c9e942a8d34fc4be053051b8117d2471870aae4609' const moonController = new MoonDidController( identifier, undefined, signer, undefined, undefined, undefined, _CONTRACT_ADDRESS, false ) const hash = await moonController.createSetAttributeHash('did/pub/Secp256k1/sigAuth', publicKey, 86400) const signature = new ethers.SigningKey(privateKey2).sign(hash) await moonController.setAttributeSigned('did/pub/Secp256k1/sigAuth', publicKey, 86400, { sigV: signature.v, sigR: signature.r, sigS: signature.s, }) }) it.only('Should resolve a did document', async () => { const didDocument = await resolver.resolve('did:moon:alpha:0xf6f84c31730d468728fbb2bb3dc023a63afe17c5') console.log(didDocument) }) })