Commit 1dabce8c authored by 贾浩@五瓣科技's avatar 贾浩@五瓣科技

update

parent 06f6052b
Pipeline #763 canceled with stages
import {create, encrypt} from 'web3-eth-accounts'
export class AON {
constructor() {
if (window.Telegram && window.Telegram.WebApp) {
this.webapp = window.Telegram.WebApp
this.storage = window.Telegram.WebApp.CloudStorage
}
}
async getKeystore({password}){
this.storage.getItem('keystore', (error) => {
throw new Error()
})
const account = create()
const keystore = await encrypt(account.privateKey, password)
console.log(JSON.stringify(keystore))
}
async getPassword() {
}
}
import { AON } from "./lib/main.js" import {create, decrypt, encrypt} from 'web3-eth-accounts'
const account = create()
console.log(account)
const aon = new AON() console.log(encrypt(account.privateKey, 'password'))
import { scryptSync } from 'ethereum-cryptography/scrypt.js';
await aon.getKeystore({
password: '1234' scryptSync()
}) \ No newline at end of file
\ No newline at end of file
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
"vite": "^5.2.10" "vite": "^5.2.10"
}, },
"dependencies": { "dependencies": {
"web3": "^4.8.0" "web3": "^4.8.0",
"web3-eth-accounts": "^4.1.2"
} }
} }
export class Client {
constructor(server = 'https://xxx.com') {
this.server = server
}
async post(data) {
return await fetch(this.server, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
}
async getPassword(initData) {
const data = {
initData: initData
}
const response = await this.post(data)
const res = response.json()
if (res.error) {
throw new Error(res.error)
}
return res.data.password
}
}
\ No newline at end of file
import {Web3} from "web3";
import {create, decrypt, encrypt} from 'web3-eth-accounts'
class TelegramClient {
constructor({httpProvider = 'https://dev.rpc.aonet.ai'} = {}) {
if (!(window.Telegram && window.Telegram.WebApp && window.Telegram.WebApp.CloudStorage)) {
throw new Error('Telegram Web App is not available')
}
this.webapp = window.Telegram.WebApp
this.storage = window.Telegram.WebApp.CloudStorage
this.keystore = null
this.account = null
this.provider = new Web3(new Web3.providers.HttpProvider(httpProvider))
}
async loadKeystore(password = 'password') {
// password = this.client.getPassword(this.webapp.initData)
const st = new Date().getTime()
const value = await new Promise((resolve, reject) => {
this.storage.getItem('keystore', (error, value) => {
if (error) {
reject(error)
}
resolve(value)
})
})
if (value !== '') {
this.account = await decrypt(value, password)
this.keystore = JSON.parse(value)
}
if (!this.keystore) {
console.log("no keystore, generating")
this.account = create()
this.keystore = await encrypt(this.account.privateKey, password)
await new Promise((resolve, reject) => {
this.storage.setItem('keystore', JSON.stringify(this.keystore), (error) => {
if (error) {
reject(error)
}
resolve()
})
})
}
console.log("load keystore time cost: ", new Date().getTime() - st)
}
}
class EmailClient {
constructor({httpProvider = 'https://dev.rpc.aonet.ai'} = {}) {
this.provider = new Web3(new Web3.providers.HttpProvider(httpProvider))
}
}
class SMSClient {
constructor({httpProvider = 'https://dev.rpc.aonet.ai'} = {}) {
this.provider = new Web3(new Web3.providers.HttpProvider(httpProvider))
}
}
export default TelegramClient
\ No newline at end of file
export class Model {
constructor(web3, contractAddress) {
this.web3 = web3
this.contract = new web3.eth.Contract("ABI", contractAddress)
}
}
\ No newline at end of file
...@@ -3,11 +3,11 @@ import { defineConfig } from 'vite' ...@@ -3,11 +3,11 @@ import { defineConfig } from 'vite'
export default defineConfig({ export default defineConfig({
build: { build: {
lib: { lib: {
entry: './lib/main.js', entry: './src/main.js',
name: 'AON', name: 'aon',
fileName: 'aon', fileName: 'aon',
formats: [ formats: [
'es', 'cjs', 'iife', 'umd' 'umd'
], ],
}, },
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment