
Namada公共测试网节点搭建
namada的公共测试网开启了,可以参与。但是没有激励。准备工作一台服务器,硬件配置cpu 4核以上内存 8G以上硬盘空间500G确保你的机器开启26656和26657 两个端口 如果你用vps作为服务器,如何选择以及如何开启可以查看我之前的文章安装更新安装以及更新一些依赖库 这部分复制粘贴更新安装就行了cd $HOME sudo apt update && sudo apt upgrade -y sudo apt install curl tar wget clang pkg-config libssl-dev libclang-dev jq build-essential bsdmainutils git make ncdu gcc git jq chrony liblz4-tool -y sudo apt install -y uidmap dbus-user-session 继续安装下载rustsudo curl https://sh.rustup.rs -sSf | sh -s -- -y source $HOME/.cargo/env 安装goif...

3分钟撸空投 | Araya Finance一站式Defi协议交互教程
Araya Finance是在Sui上的一站式Defi协议,刚开放过了早期测试网,可以进行测试。 官方推特: https://twitter.com/ArayaFinance 官方discord: https://discord.com/invite/6XfsKdEY8d教程开始首先需要下载Sui钱包,创建一个钱包地址 https://chrome.google.com/webstore/detail/sui-wallet/opcgpfmipidbgpenhmajoajpbobppdil 如果你是新创建的Sui,需要先领取Sui测试币,打开钱包有Request按钮,申请测试Sui即可 来到网站连接钱包,领取测试代币 https://www.arayafi.org/swap任意选两个代币进行swap操作点击确认和授权按钮确认成功界面需要截图保留,后面操作需要提交证明需要保存截图接下来添加流动性,点击liquidity,再点击add liquidity选着添加的数量,点击add liquidity成功后会在列表那里显示记录,接着点击manage → remove 选着移除流动性的比例...
Developer | WEB3 | NFT | Solidity

Namada公共测试网节点搭建
namada的公共测试网开启了,可以参与。但是没有激励。准备工作一台服务器,硬件配置cpu 4核以上内存 8G以上硬盘空间500G确保你的机器开启26656和26657 两个端口 如果你用vps作为服务器,如何选择以及如何开启可以查看我之前的文章安装更新安装以及更新一些依赖库 这部分复制粘贴更新安装就行了cd $HOME sudo apt update && sudo apt upgrade -y sudo apt install curl tar wget clang pkg-config libssl-dev libclang-dev jq build-essential bsdmainutils git make ncdu gcc git jq chrony liblz4-tool -y sudo apt install -y uidmap dbus-user-session 继续安装下载rustsudo curl https://sh.rustup.rs -sSf | sh -s -- -y source $HOME/.cargo/env 安装goif...

3分钟撸空投 | Araya Finance一站式Defi协议交互教程
Araya Finance是在Sui上的一站式Defi协议,刚开放过了早期测试网,可以进行测试。 官方推特: https://twitter.com/ArayaFinance 官方discord: https://discord.com/invite/6XfsKdEY8d教程开始首先需要下载Sui钱包,创建一个钱包地址 https://chrome.google.com/webstore/detail/sui-wallet/opcgpfmipidbgpenhmajoajpbobppdil 如果你是新创建的Sui,需要先领取Sui测试币,打开钱包有Request按钮,申请测试Sui即可 来到网站连接钱包,领取测试代币 https://www.arayafi.org/swap任意选两个代币进行swap操作点击确认和授权按钮确认成功界面需要截图保留,后面操作需要提交证明需要保存截图接下来添加流动性,点击liquidity,再点击add liquidity选着添加的数量,点击add liquidity成功后会在列表那里显示记录,接着点击manage → remove 选着移除流动性的比例...
Developer | WEB3 | NFT | Solidity

Subscribe to dapaopao

Subscribe to dapaopao
Share Dialog
Share Dialog
<100 subscribers
<100 subscribers


前段时间参加了一个游戏活动,给出12个助记词但是打乱顺序,钱包里有1个Eth,FCFS。
在没有任何提示的情况下会有12!(479001600)种可能。
这不就是全排列吗!
创建一个目录然后初始化项目
npm init
安装yarn
npm install -g yarn
安装依赖模块
yarn add bip39 ethereum-hdwallet
创建index.js文件
导入模块
var fs = require("fs")
const bip39 = require('bip39')
const HDWallet = require('ethereum-hdwallet');
配置参数
//计数器
var count = 0;
//已知的12个助记词
var arrtemp = ['cluster', 'violin', 'cart', 'steel', 'crouch', 'olive', 'water', 'pass', 'lab', 'father', 'until', 'exercise'];
//需要对比的钱包地址
var create_address = '0x1c5ea7f3a722ea2606cfbd4d6b3aaec488906553'.toLowerCase();
实现部分
//全排列 非递归 求模算法
async function perm(arr) {
var result = new Array(arr.length);
var fac = 1;
for (var i = 2; i <= arr.length; i++)
fac *= i;
for (index = 0; index < fac; index++) {
var t = index;
for (i = 1; i <= arr.length; i++) {
var w = t % i;
for (j = i - 1; j > w; j--)
result[j] = result[j - 1];
result[w] = arr[i - 1];
t = Math.floor(t / i);
}
//console.log(result);
var returnFlag = await getAddress(result);
if(returnFlag)
{
//创建文件保存正确的助记词顺序
fs.writeFile('keyword.txt', result.toString(), function(err, fd) {});
console.log("Find Key:"+result.toString());
console.log("total", count);
process.exit(1);
}
}
console.log("total", count);
}
//用打乱生成的助记词生成公私钥、地址
async function getAddress(inputarr) {
var flag = false;
var temp = inputarr;
var str = '';
for (var i = 0; i < temp.length; i++) {
str += temp[i] + ' ';
}
mnemonic = str;
var seed = await bip39.mnemonicToSeed(mnemonic); //生成种子
//console.log(seed)
var hdwallet = HDWallet.fromSeed(seed);
for (var i = 0; i < 1; i++) { // 用同一个种子生成多个地址
count++;
//console.log('=============地址' + (i + 1) + '=================')
var key = hdwallet.derive("m/44'/60'/0'/0/" + i); // 地址路径的最后一位设置为循环变量
//console.log(create_address);
var EthAddress = '0x' + key.getAddress().toString('hex'); //地址
if (EthAddress == create_address) {
console.log("PrivateKey = " + key.getPrivateKey().toString('hex')); // 私钥
console.log("PublicKey = " + key.getPublicKey().toString('hex')); // 公钥
console.log('ETH Address = ' + EthAddress);
flag = true;
}
else {
console.log('=============address count:' + (count) + ' =================');
console.log('=============address:' + EthAddress + ' =================');
flag = false;
}
}
return flag;
}
perm(arrtemp);
最后执行
node index.js
效果如下

如果匹配到结果会在当前文件夹下生成keyword.txt文件来保存结果。
这代码可以改进的还有很多,比如用多线程来执行,会快很多。
最后一提当我还在运行的时候,已经被某个人拿走了那1ETH。。
如有任何问题欢迎来沟通交流,关注推特不定期更新。
前段时间参加了一个游戏活动,给出12个助记词但是打乱顺序,钱包里有1个Eth,FCFS。
在没有任何提示的情况下会有12!(479001600)种可能。
这不就是全排列吗!
创建一个目录然后初始化项目
npm init
安装yarn
npm install -g yarn
安装依赖模块
yarn add bip39 ethereum-hdwallet
创建index.js文件
导入模块
var fs = require("fs")
const bip39 = require('bip39')
const HDWallet = require('ethereum-hdwallet');
配置参数
//计数器
var count = 0;
//已知的12个助记词
var arrtemp = ['cluster', 'violin', 'cart', 'steel', 'crouch', 'olive', 'water', 'pass', 'lab', 'father', 'until', 'exercise'];
//需要对比的钱包地址
var create_address = '0x1c5ea7f3a722ea2606cfbd4d6b3aaec488906553'.toLowerCase();
实现部分
//全排列 非递归 求模算法
async function perm(arr) {
var result = new Array(arr.length);
var fac = 1;
for (var i = 2; i <= arr.length; i++)
fac *= i;
for (index = 0; index < fac; index++) {
var t = index;
for (i = 1; i <= arr.length; i++) {
var w = t % i;
for (j = i - 1; j > w; j--)
result[j] = result[j - 1];
result[w] = arr[i - 1];
t = Math.floor(t / i);
}
//console.log(result);
var returnFlag = await getAddress(result);
if(returnFlag)
{
//创建文件保存正确的助记词顺序
fs.writeFile('keyword.txt', result.toString(), function(err, fd) {});
console.log("Find Key:"+result.toString());
console.log("total", count);
process.exit(1);
}
}
console.log("total", count);
}
//用打乱生成的助记词生成公私钥、地址
async function getAddress(inputarr) {
var flag = false;
var temp = inputarr;
var str = '';
for (var i = 0; i < temp.length; i++) {
str += temp[i] + ' ';
}
mnemonic = str;
var seed = await bip39.mnemonicToSeed(mnemonic); //生成种子
//console.log(seed)
var hdwallet = HDWallet.fromSeed(seed);
for (var i = 0; i < 1; i++) { // 用同一个种子生成多个地址
count++;
//console.log('=============地址' + (i + 1) + '=================')
var key = hdwallet.derive("m/44'/60'/0'/0/" + i); // 地址路径的最后一位设置为循环变量
//console.log(create_address);
var EthAddress = '0x' + key.getAddress().toString('hex'); //地址
if (EthAddress == create_address) {
console.log("PrivateKey = " + key.getPrivateKey().toString('hex')); // 私钥
console.log("PublicKey = " + key.getPublicKey().toString('hex')); // 公钥
console.log('ETH Address = ' + EthAddress);
flag = true;
}
else {
console.log('=============address count:' + (count) + ' =================');
console.log('=============address:' + EthAddress + ' =================');
flag = false;
}
}
return flag;
}
perm(arrtemp);
最后执行
node index.js
效果如下

如果匹配到结果会在当前文件夹下生成keyword.txt文件来保存结果。
这代码可以改进的还有很多,比如用多线程来执行,会快很多。
最后一提当我还在运行的时候,已经被某个人拿走了那1ETH。。
如有任何问题欢迎来沟通交流,关注推特不定期更新。
No activity yet