sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install ethereum
geth version
{
"nonce":"0x0000000000000042",
"mixhash":"0x0000000000000000000000000000000000000000000000000000000000000000",
"difficulty": "0x4000",
"alloc": {
},
"coinbase":"0x0000000000000000000000000000000000000000",
"timestamp": "0x00",
"parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x00000000",
"gasLimit":"0xffffffff",
"config":{
"chainId": 666,
"homesteadBlock": 0
}
}
geth --datadir "chain" init genesis.json
geth --datadir "./chain" --networkid 666 --port 30303 --http --http.addr "0.0.0.0" --http.port 8545 --http.api 'db,net,eth,web3,personal' --allow-insecure-unlock --http.corsdomain '*' console 2>> geth.log
1.1 用户列表
eth.accounts
1.2 添加用户
personal.newAccount("password")
1.3 挖矿、停止
miner.start()
miner.stop()
1.4 查看余额
eth.getBalance(eth.accounts[0])
1.5 获取节点信息
admin.nodeInfo
admin.nodeInfo.enode
admin.nodeInfo.id
admin.nodeInfo.ports.listener
npm install -g ganache-cli
启动
ganache-cli
mkdir ganache
npm install web3 -save
const Web3 = require("web3")
console.log("判断浏览器是否启用Metamask插件的对象Web3.givenProvider结果为:",Web3.givenProvider);
const web3 = new Web3(Web3.givenProvider || new Web3.providers.HttpProvider('http://localhost:8545'));
console.log(web3.version)
web3.eth.getAccounts().then(console.log)
npm install -g express-generator
npm install express -g
express -e myapp
npm install
npm start
172.16.13.17:3000
const express = require('express');
const router = express.Router();
const Web3 = require("web3")
const web3 = new Web3(Web3.givenProvider || new Web3.providers.HttpProvider('http://localhost:8545'));
web3.eth.getAccounts().then(console.log)
/* GET home page. */
router.get('/', function(req, res, next) {
web3.eth.getAccounts().then(accounts=>{
const account = accounts[0];
web3.eth.getBalance(account).then(balance=>{
const amount = web3.utils.fromWei(balance, 'ether');
res.render('index',{
account: accounts, balance: amount})
})
})
});
module.exports = router;
var app = express();
var ejs = require('ejs')
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.engine('.html',ejs.__express);
app.set('view engine', 'html');
<!DOCTYPE html>
<html>
<head>
<title>账户余额</title>
<link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<h1>账户是:<%= account %> </h1>
<h1>余额是:<%= balance %> </h1>
</body>
</html>
MetaMask/外部账户导入到Geth私链
https://www.cnblogs.com/shizhe99/p/15087068.html
const Web3 = require("web3")
// ABI
const ERC721V1ABI = require("../config/erc721_v1.json");
// 连接测试链:https://rpc-mumbai.maticvigil.com
const web3 = new Web3("https://rpc-mumbai.maticvigil.com");
// 通过私钥获取账户信息
const key_account = web3.eth.accounts.privateKeyToAccount("0xe6c68097bd7e6377c10a9010ba8362e014bbfb57b50202481671d4a4ae9fca18")
// 只有添加到wallet 才能交易
web3.eth.accounts.wallet.add(key_account);
const encodedParams =
"0x485f0f700000000000000000000000000000000000000000000000000000000000ad253b0000000000000000000000\
00000000000000000000000000000000000013081b00000000000000000000000000000000000000000000000000000000000000600000000000000\
000000000000000000000000000000000000000000000000008676976656e55524c000000000000000000000000000000000000000000000000";
class FirstContractWeb3 {
constructor() {
// this.initContract1155()
// this.initContract721()
this.getAccountBalance()
// this.createAccount()
}
// 创建钱包
createAccount(){
// address: '0x1afF0Db20192Bd4c040e8e284943566bb4e66F0C',
// privateKey: '0xe6c68097bd7e6377c10a9010ba8362e014bbfb57b50202481671d4a4ae9fca18',
// console.log(web3.eth.accounts.wallet.create(1));
// address: '0x1A72dd6735bDA5Ad219D3ffB6Dd544E3dcda57e8',
// privateKey: '0xbf249f4d9602ee6e40f852b161e38c9b0e8590296af739d7206e293023ea0090',
//console.log(web3.eth.accounts.create(1));
const key_account1 = web3.eth.accounts.privateKeyToAccount("0xe6c68097bd7e6377c10a9010ba8362e014bbfb57b50202481671d4a4ae9fca18")
const key_account2 = web3.eth.accounts.privateKeyToAccount("0xbf249f4d9602ee6e40f852b161e38c9b0e8590296af739d7206e293023ea0090")
web3.eth.accounts.wallet.add(key_account1);
web3.eth.accounts.wallet.add(key_account2);
transaction(key_account2,key_account2)
}
// 基于 721 协议
initContract721() {
// 基于 web3.eth.Contract 对象来创建合约(调用合约的方法)
const ERC721_v1 = new web3.eth.Contract(
ERC721V1ABI,
"0x72B6Dc1003E154ac71c76D3795A3829CfD5e33b9"
);
const uri = 'http://127.0.0.1:5200/ipfs/QmSTGeo63NHDxgwtKsvbz81gWmVupftzcarZw58h5Hn3kE'
ERC721_v1.methods.mintToCaller(key_account.address, uri).send({
from: key_account.address, gas: 500000})
.then(r => console.log("result721: ", r))
.catch(console.error);
web3.eth.getBalance(key_account.address)
.then(result => {
console.log("balance: " + result)})
}
// 转账
transaction(key_account1,key_account2){
web3.eth.sendTransaction({
from: key_accoun1t.address,
to: key_account2.address,
gasPrice: "20000000000",
gas: "21000",
value: 1000000000
}).then(console.log)
}
}
// 执行程序
let first_contract = new FirstContractWeb3();
// console.log(Web3.modules)
文章浏览阅读1.1w次,点赞7次,收藏34次。vue-grid-layout的使用、实例、遇到的问题和解决方案_vue-grid-layout
文章浏览阅读218次。然后连接一个数据源,就会在下面自动产生一个添加附件的组件。把这个控件复制粘贴到页面里,就可以单独使用来上传了。插入一个“编辑”窗体。_powerapps点击按钮上传附件
文章浏览阅读264次。(1) Abstraction (抽象)(2) Polymorphism (多态)(3) Inheritance (继承)(4) Encapsulation (封装)_"object(cnofd[\"ofdrender\"])十条"
文章浏览阅读133次。删除node_modules,重新npm install看是否成功。在 package.json 文件中的 scripts 中加入。修改你的第三方库的bug等。然后目录会多出一个目录文件。_修改 node_modules
文章浏览阅读883次。【代码】【】kali--password:su的 Authentication failure问题,&sudo passwd root输入密码时Sorry, try again._password: su: authentication failure
文章浏览阅读1w次,点赞13次,收藏97次。整理5个优秀的微信小程序开源项目。收集了微信小程序开发过程中会使用到的资料、问题以及第三方组件库。_微信小程序开源模板
文章浏览阅读128次。Centos7最简搭建NFS服务器_centos7 搭建nfs server
文章浏览阅读1.2k次,点赞2次,收藏3次。前言mybatis在持久层框架中还是比较火的,一般项目都是基于ssm。虽然mybatis可以直接在xml中通过SQL语句操作数据库,很是灵活。但正其操作都要通过SQL语句进行,就必须写大量的xml文件,很是麻烦。mybatis-plus就很好的解决了这个问题。..._mybaitis-plus ruledataobjectattributemapper' and 'com.picc.rule.management.d
文章浏览阅读325次。EECE 1080C / Programming for ECESummer 2022Laboratory 4: Global Functions PracticePlagiarism will not be tolerated:Topics covered:function creation and call statements (emphasis on global functions)Objective:To practice program development b_eece1080c
文章浏览阅读53次。被同机房早就1年前就学过的东西我现在才学,wtcl。设要求的数为\(x\)。设当前处理到第\(k\)个同余式,设\(M = LCM ^ {k - 1} _ {i - 1}\) ,前\(k - 1\)个的通解就是\(x + i * M\)。那么其实第\(k\)个来说,其实就是求一个\(y\)使得\(x + y * M ≡ a_k(mod b_k)\)转化一下就是\(y * M ...
文章浏览阅读1.3k次。首先,问题是如何出现的?晚上复查代码,发现一个activity没有调用自己的ondestroy方法我表示非常的费解,于是我检查了下代码。发现再finish代码之后接了如下代码finish();System.exit(0);//这就是罪魁祸首为什么这样写会出现问题System.exit(0);////看一下函数的原型public static void exit (int code)//Added ..._android 手动杀死app,activity不执行ondestroy
文章浏览阅读894次。Q: SylixOS 版权是什么形式, 是否分为<开发版税>和<运行时版税>.A: SylixOS 是开源并免费的操作系统, 支持 BSD/GPL 协议(GPL 版本暂未确定). 没有任何的运行时版税. 您可以用她来做任何 您喜欢做的项目. 也可以修改 SylixOS 的源代码, 不需要支付任何费用. 当然笔者希望您可以将使用 SylixOS 开发的项目 (不需要开源)或对 SylixOS 源码的修改及时告知笔者.需要指出: SylixOS 本身仅是笔者用来提升自己水平而开发的_select函数 导致堆栈溢出 sylixos