npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

proofjs

v0.0.1

Published

Web3.js Library

Readme

使用

调试模式

http://192.168.56.1:9009/proof.js?t=随机数/时间戳

生产环境

#导入文件
import Proof from '../proof'

#npm安装依赖
npm install -S proofjs

web3js二次封装文档

导入 import Proof from '../proof' 文件 实例化 new Proof 对象

方法调用

  1. Promise 风格

  Proof.getBalance(address).then((balance)=>{
    console.log(balance);
  }).catch(function (reason) {
    console.log('错误')
  })
  1. async/await 风格 async/await 需要使用 trycatch 来捕获错误

try {
  const balance = await Proof.getBalance(address)

} catch (error) {
  // Handle error. Likely the user rejected the login:
  console.log('这是个美丽的错误')
}
  

MetaMask对象

需要Chrome浏览器安装MetaMask插件, 使用中暴露全局对象 Proof

示例:

let account = Proof.selectedAddress

属性

isMetaMask

检测是否有MetaMask 插件

selectedAddress

当前选定账户

networkVersion

当前区块链的网络 ID

let networkData = {
  1: 'Ethereum Main Network', //以太坊主网         1
  2: 'Morden Test network',  //自己的测试网络(Localhost:8545)     2
  3: 'Ropsten Test Network', //Ropsten测试网     3
  4: 'Rinkeby Test Network', //Rinkeby测试网     4
  42: 'Kovan Test Network',  //Kovan测试网络     42
  5777: 'Custom Network',   //自定义网络
}

networkName

当前区块链的网络 名称

方法()

一般都需要查链上数据

login() 完成

MetaMask 登录

参数: 无

返回值:

/**
 * 
 * 返回用户详情信息
 * @return { String } 账户名称
 * @return { String } address 账户地址
 * @return { String } networkId 网络类型ID
 * @return { String } networkName 网络名称
 * @return { String } balance 账户余额(ETH)
 * @return { String } token Token余额
 * @return { String } symbol Token符号
 * 
 */
示例

Proof.login().then((r)=>{
  console.log(r);
})

isValidToken() 完成

Token 名称是否有效(是否已经注册过且链上未过期)

参数:

_symbol: Token 符号

返回值:

false : true 是否有效

示例

Proof.isValidToken('RFT118888').then((r)=>{
  console.log(r);
})

name() 完成

代币名称

参数: 无

示例

Proof.name().then((res)=>{
  console.log(res);
})

symbol() 完成

代币符号

参数: 无

示例

Proof.symbol().then((res)=>{
  console.log(res);
})

decimals() 完成

获取小数点

参数: 无

示例

Proof.decimals().then((res)=>{
  console.log(res);
})

totalSupply() 完成

获取当前账户代币余额

参数:

_tokenSymbol 代币符号 (默认不传为平台代币币种)

unit: 单位 默认 'ether' 为(ETH)单位

示例

Proof.totalSupply('PC').then((r)=>{
  console.log(r);
})

balanceOf() 完成

获取某一地址的代币余额

参数:

address: 地址

_tokenSymbol 代币符号 (默认不传为平台代币币种)

unit: 单位 默认 'ether' 为(ETH)单位

示例

Proof.balanceOf(address).then((b)=>{
  console.log(b);
})

getBalance(address, unit) 完成

获取ETH余额

参数:

address: 默认当前选定状态账户

unit: 单位 默认 'ether' 为(ETH)单位

示例

Proof.getBalance('0xdB67e301D01c3C203162D4e87BdC9efae4C0A7F7', ).then((r)=>{
  console.log(r);
})

signData() 完成

签名数据 Signature

参数:

value: 默认当前选定状态账户

address: 地址 默认当前用户地址(可不传)

返回值: 签名

示例

Proof.signData('随机数').then((r)=>{
  console.log(r);
})

matemaskTransferFrom() (废弃)

使用MetaMask

参数:

_to: 向指定地址

_value:

示例
Proof.matemaskTransferFrom(
  '0xc96298090A3Db47ad27Fe39Be57f74146549DC71',
  '0xde0b6b3a7640000' // an ether has 18 decimals, here in hex.
).then((res)=>{
  console.log(res);
})

transfer() 完成

转代币 (注册费 给平台的)

参数:

_to: 收件人的地址

_value: 要传输的Token数量

示例
Proof.transfer(
  '0xc96298090A3Db47ad27Fe39Be57f74146549DC71',
  1000 // an ether has 18 decimals, here in hex.
).then((res)=>{
  console.log(res);
})

getTickerDetails() 完成

返回给定ticker的所有者和时间戳(详情)

参数:

_tokenSymbol: 唯一的令牌代码


Proof.getTickerDetails('RFT118888').then((r)=>{
  console.log(r);
})

approveToken() 完成

授权Token (付250的手续费) 当不传代币符号时不会查询token符号有没有注册过

参数:

_tokenSymbol: 唯一的令牌代码 (校验是否已经执行过)

_type: 'register'(注册)/'generate'(创建)

_owner: 令牌所有者的地址(默认当前地址) 可不传

返回值:

状态码


{
  code: 1000300, 
  msg: "已经付过钱: 250000000000000000000"
}

{
  code: 1000301, 
  msg: "已经注册过"
}

{
  code: 1000302, 
  msg: "已经创建过"
}

# 待定功能
{
  code: 1000200, 
  msg: "成功"
}

status: 交易状态

gasUsed: 矿工费

blockNumber: 交易所在块的编号

transactionHash: 交易hash

contractAddress: 合约地址

url: 查看交易详情URL

示例

Proof.approveToken(
  'RFT',
  'register'
).then((r)=>{
  console.log(r);
})

registerToken() 完成

注册代币(写入链上)

参数:

_tokenSymbol: 唯一的令牌代码

_tokenName: 令牌的名称

_owner: 令牌所有者的地址(默认当前地址) 可不传

返回值:

status: 交易状态

gasUsed: 矿工费

blockNumber: 交易所在块的编号

transactionHash: 交易hash

contractAddress: 合约地址

url: 查看交易详情URL

示例

Proof.registerToken(
  'RFT',
  'RFTNam',
).then((r)=>{
  console.log(r);
})

generateToken() 完成

创建Token(部署到链上)

参数:

_tokenSymbol: 唯一的令牌代码

_tokenName: 令牌的名称

_tokenDetails: 附加信息 (可不传)

_divisible: 是否可以整除 (默认false)

返回值:

status: 交易状态

gasUsed: 矿工费

blockNumber: 交易所在块的编号

transactionHash: 交易hash

contractAddress: 合约地址

url: 查看交易详情URL

示例

Proof.generateToken(
  'RFAB',
  'RFA Name',
).then((r)=>{
  console.log(r);
})

getSecurityTokenData() 完成

创建Token(部署到链上)

参数:

_address: 唯一的令牌代码

返回值:

Token 信息

示例

Proof.getSecurityTokenData(
  '0x19eD11461370439C417B5887e0BBEed29265aA28',
).then((r)=>{
  console.log(r)
})

setCountTM() 完成

设置持有人数量

参数:

_count: 数量 (-1 为暂停)

_tokenSymbol: 代币符号

返回值:

status: 交易状态

gasUsed: 矿工费

blockNumber: 交易所在块的编号

transactionHash: 交易hash

contractAddress: 合约地址

url: 查看交易详情URL

示例

Proof.setCountTM(
  'PT',
  1010,
).then((r)=>{
  console.log(r);
})

getCountTM() 完成

获取持有人数量

参数:

_tokenSymbol: 代币符号

返回值:

当前数量

示例

Proof.getCountTM(
  'PT',
).then((r)=>{
  console.log(r);
})

setPercentageTM() 完成

设置百分比

参数:

_percentage: 百分比 (-1 为暂停)

_tokenSymbol: 代币符号

返回值:

status: 交易状态

gasUsed: 矿工费

blockNumber: 交易所在块的编号

transactionHash: 交易hash

contractAddress: 合约地址

url: 查看交易详情URL

示例

Proof.setPercentageTM(
  'PC',
  95,
).then((r)=>{
  console.log(r);
})

getPercentageTM() 完成

获取持有人数量

参数:

_tokenSymbol: 代币符号

返回值:

当前百分比

示例

Proof.getPercentageTM(
  'PT',
).then((r)=>{
  console.log(r);
})

setPauseTM() 完成

设置暂停开关

参数:

_tokenSymbol: 代币符号

_type: 类型 'count'-数量 'percentage'-百分比

_bool: 开启/关闭 Boolean

返回值:

status: 交易状态

gasUsed: 矿工费

blockNumber: 交易所在块的编号

transactionHash: 交易hash

contractAddress: 合约地址

url: 查看交易详情URL

示例

Proof.setPauseTM(
  'PCC',
  'percentage', //count  percentage
  true
).then((r)=>{
  console.log(r);
})

getTransferManagerInfo() 完成

获取数量 百分比信息

参数:

_tokenSymbol: 代币符号

返回值:

当前百分比

示例

Proof.getTransferManagerInfo(
  'PCC'
).then((r)=>{
  console.log(r);
})

setWhitelistMultiTM() 完成

添加或删除白名单中的地址

参数:

_tokenSymbol: 代币符号

_whitelist: 白名单对象

[
  {
    address: '白名单的地址列表',
    from: '销售锁定期结束且投资者可以自由出售其代币的那一刻',
    to: '购买锁定期结束且投资者可以从其他人那里自由购买代币的那一刻',
    expiry: '投资者KYC的一系列时刻将得到验证',
    canBuyFromSTO: true
  }
]

返回值:

status: 交易状态

gasUsed: 矿工费

blockNumber: 交易所在块的编号

transactionHash: 交易hash

contractAddress: 合约地址

url: 查看交易详情URL

示例

Proof.setWhitelistMultiTM(
  'PC',
  [
    {
      address: '0xee7ae74d964f2be7d72c1b187b38e2ed3615d4d1',
      from: '5/5/2018',
      to: '1/8/2018',
      expiry: '10/10/2019',
      canBuyFromSTO: true
    }
  ]
).then((r)=>{
  console.log(r);
})

setMintMultiTM() 完成

创造新的代币并将其分配给目标投资者(挖矿)

参数:

_tokenSymbol: 代币符号

_distribData: 分配对象

[
  {
    address: '0xee7ae74d964f2be7d72c1b187b38e2ed3615d4d1', //地址
    amount: 1111, //金额
  }
]

返回值:

status: 交易状态

gasUsed: 矿工费

blockNumber: 交易所在块的编号

transactionHash: 交易hash

contractAddress: 合约地址

url: 查看交易详情URL

示例

Proof.setMintMultiTM(
  'PC',
  [
    {
      address: '0xee7ae74d964f2be7d72c1b187b38e2ed3615d4d1',
      amount: 1111,
    }
  ]
).then((r)=>{
  console.log(r);
})

getInvestors() 完成

获取投资者阵列的长度

参数:

_tokenSymbol 代币符号 (默认不传为平台代币币种)

示例

Proof.getInvestors('PC').then((r)=>{
  console.log(r);
})

tokenDetails() 完成

Token 详情

参数:

_tokenSymbol: 代币符号

返回值:

详情信息

示例

Proof.tokenDetails('PC').then((r)=>{
  console.log(r);
})

upTokenDetails() 完成

更新 Token 附属信息

参数:

_tokenSymbol: 代币符号

_tokenDetails: 附属信息

返回值:

status: 交易状态

gasUsed: 矿工费

blockNumber: 交易所在块的编号

transactionHash: 交易hash

contractAddress: 合约地址

url: 查看交易详情URL

示例

Proof.upTokenDetails('PC', 'sdsdsdsdsds').then((r)=>{
  console.log(r);
})

isAddress() 完成

地址是否有效

参数:

_address: 地址

返回值:

布尔值

示例

Proof.isAddress('ABC')

isOnWhitelist() 完成

是否在白名单

参数:

_tokenSymbol: 代币符号

_investor: 地址

返回值:

布尔值

示例

Proof.isOnWhitelist(
  'PC',
  "0xee7ae74d964f2be7d72c1b187b38e2ed3615d4d1",
).then((r)=>{
  console.log(r);
})

checkWhitelistMulti() 完成

校验白名单列表数据

参数:

_tokenSymbol: 代币符号

_investors: 地址列表

_type: 默认(0)是否在白名单之内 KYC(1)投资有效期KYC

返回值:

verifiedArray: 校验成功地址列表

failedArray: 无效地址列表

示例

Proof.checkWhitelistMulti(
  'PC',
  [
    "0xee7ae74d964f2be7d72c1b187b38e2ed3615d4d1",
    "0xdB67e301D01c3C203162D4e87BdC9efae4C0A7F7"
  ]
).then((r)=>{
  console.log(r);
})

accountsChanged() 完成

探测监听账号有变化

参数:

_callback: 回调函数

返回值:

示例

Proof.accountsChanged((accounts)=>{
  //账户发生变化
  console.log('账户发生变化', accounts)
  
})

{
  "presets": [
    ["env", {
      "modules": false,
      "targets": {
        "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
      }
    }],
    "stage-3"
  ],
  "plugins": ["transform-vue-jsx", "transform-runtime"]
}


{
  "presets": ["env"],
  "plugins": ["transform-object-rest-spread", "transform-class-properties"]
}

{
  "presets": [["env", { "modules": false }], "stage-3"],
  "plugins": ["transform-runtime", "transform-object-rest-spread", "transform-class-properties"]
}

{
  "presets": ["env", "flow-vue"],
  "plugins": ["syntax-dynamic-import"]
}

"start": "cross-env NODE_ENV=development supervisor -w ./apk -i ./node_modules,./src,./public,./logs,./docs,./uploads,./unarchive ./apk/index.js", "dev": "webpack-dev-server --mode development", "build": "cross-env NODE_ENV=production webpack --mode production", "build:test": "rimraf ./dist && cross-env NODE_ENV=production webpack --mode production", "build:report": "npm run build --report", "dev:dist": "rollup -wm -c build/rollup.dev.config.js", "build:abi": "node --max-old-space-size=8096 build/build.js", "build:main": "node --max-old-space-size=8096 build/build.js"