├── .gitignore ├── .gitmodules ├── .nojekyll ├── .travis.yml ├── Gruntfile.js ├── LICENSE ├── README.md ├── commits.sh ├── config.toml ├── content ├── _index.md ├── about.md ├── architecture │ ├── ABI.md │ ├── Etahash算法.md │ ├── NatSpec规定.md │ ├── RLP编码.md │ ├── URLHint协议.md │ ├── devp2p.md │ ├── libp2p.md │ ├── solidity.md │ ├── swarm.md │ ├── swarm介绍.md │ ├── swarm技术.md │ ├── 代码分析工具.md │ ├── 以太坊区块链规范.md │ ├── 以太坊技术.md │ ├── 基础设施.md │ ├── 存储.md │ ├── 客户端地址交换协议.md │ ├── 挖矿.md │ ├── 授权.md │ ├── 果冻纸皮书.md │ ├── 树莓派.md │ ├── 网络.md │ ├── 网络协议.md │ ├── 联盟链.md │ ├── 蜜语whipser.md │ ├── 褐皮书.md │ ├── 设计理念.md │ ├── 黄皮书.md │ └── 默克尔树.md ├── basic │ ├── _index.md │ ├── 买币.md │ ├── 交易.md │ ├── 以太坊.md │ ├── 以太坊网络.md │ ├── 以太币.md │ ├── 创始人.md │ ├── 发行.md │ ├── 基金会.md │ ├── 应用.md │ ├── 挖矿.md │ ├── 术语.md │ ├── 浏览器.md │ ├── 白皮书.md │ └── 钱包.md ├── dev │ ├── IDE.md │ ├── _index.md │ ├── api库.md │ ├── 企业区块链.md │ ├── 安全分析.md │ ├── 客户端.md │ ├── 开发书籍.md │ ├── 开发框架.md │ ├── 开发测试网络.md │ ├── 开发环境.md │ ├── 数据查询.md │ ├── 智能合约.md │ ├── 更多.md │ ├── 最佳实践.md │ ├── 测试.md │ ├── 部署.md │ └── 高级.md ├── ecology │ ├── Gas价格计算器.md │ ├── Token注册.md │ ├── _index.md │ ├── 企业.md │ ├── 区块浏览器.md │ ├── 去中心化交易所.md │ ├── 去中心数据安全协议.md │ ├── 去中心金融.md │ ├── 教育.md │ ├── 服务.md │ ├── 游戏.md │ ├── 激励工具.md │ └── 钱包.md ├── eth2 │ ├── pos.md │ └── 分片.md ├── governance │ ├── _index.md │ ├── 人物.md │ ├── 会议.md │ ├── 社交.md │ ├── 社区论坛.md │ └── 组织.md ├── news │ └── _index.md └── roadmap │ ├── status.md │ ├── 路线图1.md │ └── 路线图2.md ├── deploy_key.enc ├── package-lock.json ├── package.json └── site ├── archetypes └── default.md ├── data └── contributor.yaml ├── static ├── CNAME ├── images │ ├── app-icon128x128.png │ ├── app-icon64x64.png │ ├── content │ │ ├── 20181028155558.jpg │ │ ├── 20181028221834.jpg │ │ ├── 20181114-212803@2x.png │ │ ├── 20181114-214238@2x.png │ │ ├── 27123601.png │ │ ├── 28423175.png │ │ ├── Blockchain.png │ │ └── ethereum-home.png │ ├── ethereum.jpeg │ ├── favicon.ico │ └── logo.png └── main.css └── themes └── material ├── CHANGELOG.md ├── LICENSE ├── LICENSE.md ├── README.md ├── archetypes └── default.md ├── layouts ├── 404.html ├── _default │ ├── list.html │ └── single.html ├── index.html ├── partials │ ├── bar.html │ ├── body.html │ ├── footer.html │ ├── footer_js.html │ ├── head.html │ ├── header.html │ ├── hero.html │ ├── nav.html │ ├── nav_item.html │ ├── social.html │ ├── source.html │ ├── tab.html │ ├── tab_item.html │ └── toc.html └── shortcodes │ ├── adm.html │ ├── img.html │ ├── note.html │ ├── relref.html │ └── warning.html └── static ├── fonts ├── icon.eot ├── icon.svg ├── icon.ttf └── icon.woff ├── images ├── favicon.png └── icons │ ├── bitbucket.svg │ ├── github.svg │ └── gitlab.svg ├── javascripts ├── application.js ├── lunr │ ├── lunr.da.js │ ├── lunr.de.js │ ├── lunr.du.js │ ├── lunr.es.js │ ├── lunr.fi.js │ ├── lunr.fr.js │ ├── lunr.hu.js │ ├── lunr.it.js │ ├── lunr.jp.js │ ├── lunr.multi.js │ ├── lunr.no.js │ ├── lunr.pt.js │ ├── lunr.ro.js │ ├── lunr.ru.js │ ├── lunr.stemmer.support.js │ ├── lunr.sv.js │ ├── lunr.tr.js │ └── tinyseg.js └── modernizr.js └── stylesheets ├── application.css └── palette.css /.gitignore: -------------------------------------------------------------------------------- 1 | /public 2 | /dev 3 | /.grunt 4 | /node_modules 5 | 6 | .DS_Store 7 | 8 | # tmp file 9 | /site/data/commits.yaml 10 | /resources -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "themes/material"] 2 | path = themes/material 3 | url = https://github.com/ysqi/hugodocs-material.git 4 | -------------------------------------------------------------------------------- /.nojekyll: -------------------------------------------------------------------------------- 1 | Disable 2 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - node 4 | sudo: required 5 | dist: trusty 6 | branches: 7 | only: 8 | - master 9 | before_install: 10 | - openssl aes-256-cbc -K $encrypted_10c6a493b743_key -iv $encrypted_10c6a493b743_iv 11 | -in deploy_key.enc -out ./deploy_key -d 12 | - eval "$(ssh-agent -s)" 13 | - chmod 600 ./deploy_key 14 | - echo -e "Host $remote_address\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config 15 | - ssh-add ./deploy_key 16 | - ssh -i ./deploy_key $username@$remote_address pwd 17 | - mkdir work 18 | - export PATH=$PATH:$PWD/work/ 19 | install: 20 | - wget https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_${HUGO_VERSION}_Linux-64bit.deb 21 | -O $PWD/work/hugo.deb 22 | - sudo dpkg -i $PWD/work/hugo.deb 23 | - npm install 24 | script: 25 | - grunt build --verbose 26 | deploy: 27 | provider: script 28 | skip_cleanup: true 29 | script: rsync -avu --delete ./public/ $username@$remote_address:$filepath 30 | on: 31 | branch: master 32 | -------------------------------------------------------------------------------- /Gruntfile.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = function (grunt) { 4 | require('time-grunt')(grunt); 5 | 6 | grunt.loadNpmTasks('grunt-contrib-clean'); 7 | grunt.loadNpmTasks('grunt-contrib-htmlmin'); 8 | grunt.loadNpmTasks('grunt-contrib-cssmin'); 9 | grunt.loadNpmTasks('grunt-exec'); 10 | 11 | var SOURCE_DIR = 'public' 12 | 13 | grunt.initConfig({ 14 | pkg: grunt.file.readJSON('package.json'), 15 | clean: { 16 | tmp: ['tmp/**/*'], 17 | deploy: [SOURCE_DIR + '/**/*'] 18 | }, 19 | exec: { 20 | buildContent: { 21 | cmd: "hugo -v", 22 | }, 23 | // 部署代码到又拍云 24 | upxdeploy:{ 25 | cmd:function(){ 26 | //防止错误,不得为空 27 | var storagepath=process.env.UPX_PATH; 28 | if (!storagepath || storagepath===""){ 29 | return 'echo "empty path " && exit 1'; 30 | } 31 | //将多个内容拼接到多条命令执行 32 | return [ 33 | ['upx','login',process.env.UPX_BUCKET,process.env.UPX_OP,process.env.UPX_PWD].join(" "), 34 | ['upx','-q','sync','-w 10',SOURCE_DIR,storagepath].join(" ") 35 | ].join('&&'); 36 | }, 37 | } 38 | }, 39 | htmlmin: { // Task 40 | dist: { // Target 41 | options: { // Target options 42 | removeComments: true, 43 | collapseWhitespace: true, 44 | minifyCSS: true, 45 | }, 46 | files: [ 47 | { 48 | expand: true, // Enable dynamic expansion. 49 | cwd: SOURCE_DIR, // Src matches are relative to this path. 50 | src: ['**/*.html'], // Actual pattern(s) to match. 51 | dest: SOURCE_DIR, // Destination path prefix. 52 | }], 53 | } 54 | }, 55 | cssmin: { 56 | options: { 57 | keepSpecialComments: 0, 58 | }, 59 | target: { 60 | files: [ 61 | { 62 | expand: true, // Enable dynamic expansion. 63 | cwd: SOURCE_DIR, // Src matches are relative to this path. 64 | src: ['**/*.css'], // Actual pattern(s) to match. 65 | dest: SOURCE_DIR, // Destination path prefix. 66 | }], 67 | } 68 | } 69 | }); 70 | 71 | // get a formatted commit message to review changes from the commit log 72 | // github will turn some of these into clickable links 73 | function getDeployMessage() { 74 | var ret = '\n\n'; 75 | if (process.env.TRAVIS !== 'true') { 76 | ret += 'missing env vars for travis-ci'; 77 | return ret; 78 | } 79 | ret += 'branch: ' + process.env.TRAVIS_BRANCH + '\n'; 80 | ret += 'SHA: ' + process.env.TRAVIS_COMMIT + '\n'; 81 | ret += 'range SHA: ' + process.env.TRAVIS_COMMIT_RANGE + '\n'; 82 | ret += 'build id: ' + process.env.TRAVIS_BUILD_ID + '\n'; 83 | ret += 'build number: ' + process.env.TRAVIS_BUILD_NUMBER + '\n'; 84 | return ret; 85 | } 86 | 87 | grunt.registerTask('check-deploy', function () { 88 | // need this 89 | this.requires(['build']); 90 | // only deploy under these conditions 91 | if (process.env.TRAVIS === 'true' && process.env.TRAVIS_SECURE_ENV_VARS === 'true' && process.env.TRAVIS_PULL_REQUEST === 'false') { 92 | grunt.log.writeln('executing deployment'); 93 | // queue deploy 94 | grunt.task.run('exec:upxdeploy'); 95 | } 96 | else { 97 | grunt.log.writeln('skipped deployment'); 98 | } 99 | }); 100 | 101 | grunt.registerTask('prep', 'Clean-up project', [ 102 | 'clean', 103 | ]); 104 | 105 | grunt.registerTask('build', 'Rebuild locally', [ 106 | 'prep', 107 | "exec:buildContent", 108 | 'htmlmin:dist', 109 | 'cssmin' 110 | ]); 111 | 112 | grunt.registerTask('publish', 'Publish from CLI', [ 113 | 'build', 114 | 'gh-pages:publish' 115 | ]); 116 | 117 | grunt.registerTask('deploy', 'Publish from Travis', [ 118 | 'build', 119 | 'check-deploy', 120 | ]); 121 | 122 | // per convention set a test task 123 | grunt.registerTask('test', ['build']); 124 | 125 | grunt.registerTask('default', ['test']); 126 | }; 127 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | [![Build Status](https://travis-ci.org/lbc-team/ethereum_wiki_cn.svg?branch=master)](https://travis-ci.org/lbc-team/ethereum_wiki_cn) 4 | 5 | 6 | # 以太坊中文资源库 7 | 8 | 本站属于[深入浅出博客](https://learnblockchain.cn/)下的以太坊技术站,打造**全面**的[以太坊资中文知识库](https://learnblockchain.cn/eth/index.html),为中国区块链发展贡献力量! 欢迎任何人加入我们! 9 | 10 | 我在学习以太坊相关知识时总难以找到高质量内容,所以我希望有一个网站能收录以太坊相关的内容,方便更多人检索。 11 | 12 | 希望朋友们在这里能有所收获,当然本站内容依旧在缓慢更新和维护中,欢迎任何人提交你们所指定的内容。 13 | 14 | ## 如果贡献 15 | 16 | 任何人都可以将你所知道的,对别人有价值的内容提交到本项目中,也非常愿意更多地人来更换的维护好以太坊的资源导航。 17 | 18 | 你有三种方式来贡献你的内容: 19 | 20 | 1. 如果你看到某一内容描述不正确,你想修改(如错别字)。你只需要点击页面底部的【点击反馈问题】便可快速修改。 21 | 2. 如果你新的内容希望本项目收录(如文章、网站、教程),可以创建关于内容的 ISSUE 即可。 22 | 3. 当然你也可以Fork 项目后,修改内容并提交 PR。 23 | -------------------------------------------------------------------------------- /commits.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | function readfile(){ 4 | #这里`为esc下面的按键符号 5 | for file in `ls $1` 6 | do 7 | #这里的-d表示是一个directory,即目录/子文件夹 8 | if [ -d $1"/"$file ] 9 | then 10 | #如果子文件夹则递归 11 | readfile $1"/"$file 12 | else 13 | #否则就能够读取该文件的地址 14 | filepath="$1/$file" 15 | # 生成 yaml 格式的commit信息到指定文件 16 | echo "$filepath:" >> "$COMMITSFILE" 17 | git log --follow --pretty=format:' 18 | - 19 | hash: %H 20 | name: %cn 21 | email: %ce 22 | date: %ci 23 | datef: %cr 24 | message: 25 | %s 26 | ' --name-only --no-merges "$filepath" | grep -v '^$' |grep -Ev "\.md" >> "$COMMITSFILE" || true 27 | 28 | fi 29 | done 30 | } 31 | #函数定义结束,这里用来运行函数 32 | folder="./content" 33 | COMMITSFILE="./site/data/commits.yaml" 34 | mkdir -p "./site/data" 35 | echo "# auto gen" > "$COMMITSFILE" 36 | readfile $folder -------------------------------------------------------------------------------- /config.toml: -------------------------------------------------------------------------------- 1 | baseurl = "https://learnblockchain.cn/eth" 2 | languageCode = "zh-cn" 3 | title = "以太坊知识库" 4 | theme = "material" 5 | metadataformat = "yaml" 6 | canonifyurls = true 7 | enableEmoji = true 8 | # Set the unicode character used for the "return" link in page footnotes. 9 | footnotereturnlinkcontents = "↩" 10 | # When enabled, creates URL on the form /filename.html instead of /filename/. 11 | uglyURLs = true 12 | # Enable Google Analytics by entering your tracking id 13 | googleAnalytics = "" 14 | 15 | # 启用rebots 16 | enableRobotsTXT = true 17 | 18 | 19 | # 调整目录 20 | dataDir = "./site/data" 21 | themesDir = "./site/themes" 22 | layoutDir = "./site/layouts" 23 | staticDir = ["./site/static"] 24 | archetypeDir ="./site/archetypes" 25 | contentDir ="content" 26 | 27 | # If the Hugo site is versioned by Git, 28 | # you will then get a .GitInfo object per page, and 29 | # Lastmod will get updated by the last commit date for content. 30 | # see: https://gohugo.io/variables/git/ 31 | enableGitInfo = true 32 | 33 | # user pygment and 34 | pygmentsUseClassic = true 35 | pygmentsuseclasses = true 36 | PygmentsCodeFences = true 37 | pygmentsstyle = "friendly" 38 | 39 | [params] 40 | # General information 41 | author = "虞双齐" 42 | description = "最全面的以太坊中文知识文库" 43 | copyright = '深入浅出社区-本站文章采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可' 44 | 45 | # Repository 46 | provider = "GitHub" 47 | repo_name = "lbc-team/ethereum_wiki_cn" 48 | repo_url = "https://github.com/lbc-team/ethereum_wiki_cn.git" 49 | version = "1.0.0" 50 | logo = "images/logo.png" 51 | # icon = "" 52 | favicon = "" 53 | 54 | # Permanent link char , Default "¶" 55 | permalink = '' 56 | 57 | # Custom assets 58 | custom_css = ["main.css"] 59 | custom_js = [] 60 | 61 | # Syntax highlighting theme 62 | highlight_css = "" 63 | 64 | # Material supports both, left-to-right (ltr) and right-to-left (rtl) text direction, Default "ltr" 65 | direction = "" 66 | 67 | [params.plugins] 68 | search = false 69 | [params.palette] 70 | # red, pink, purple, deep purple, indigo, blue, light-blue, cyan, teal, green, light-green, lime, yellow, amber, orange, deep-orange, brown, grey and blue-grey. 71 | primary = "indigo" 72 | accent = "blue" 73 | 74 | [params.font] 75 | useimage = true 76 | text = "Source Sans Pro,Helvetica Neue,Arial,sans-serif,Noto Sans CJK" 77 | code = "Ubuntu Mono" 78 | 79 | [params.theme.feature] 80 | tabs = true 81 | 82 | # cnzz 83 | [params.cnzz] 84 | enable=true #是否开启cnzz统计 85 | appid="1265946080" 86 | 87 | [[menu.docs]] 88 | name = "以太坊动态" 89 | url = "/news.html" 90 | identifier ="news" 91 | weight = 1 92 | 93 | [[menu.docs]] 94 | name = "新手入门" 95 | url = "/basic.html" 96 | identifier ="basic" 97 | weight = 10 98 | 99 | [[menu.docs]] 100 | name = "以太坊路线图" 101 | url = "/roadmap.html" 102 | identifier ="roadmap" 103 | weight = 20 104 | 105 | [[menu.docs]] 106 | name = "以太坊开发者" 107 | url = "/dev.html" 108 | identifier ="dev" 109 | weight = 20 110 | 111 | [[menu.docs]] 112 | name = "以太坊系统架构" 113 | url = "/architecture.html" 114 | identifier ="architecture" 115 | weight = 30 116 | 117 | 118 | [[menu.docs]] 119 | name = "以太坊生态" 120 | url = "/ecology.html" 121 | identifier ="ecology" 122 | weight = 20 123 | 124 | 125 | [[menu.docs]] 126 | name = "以太坊2.0" 127 | parent= "architecture" 128 | url = "/eth2.html" 129 | identifier ="eth2" 130 | weight = 30 131 | 132 | [[menu.docs]] 133 | name = "基础设施" 134 | parent= "architecture" 135 | url = "/architecture/sheshi.html" 136 | identifier ="sheshi" 137 | weight = 30 138 | 139 | 140 | [[menu.docs]] 141 | name = "以太坊治理" 142 | url = "/governance.html" 143 | identifier="governance" 144 | weight = 40 145 | 146 | [[menu.docs]] 147 | name = "关于" 148 | url = "/about.html" 149 | identifier="about" 150 | weight = 9000 151 | 152 | [blackfriday] 153 | smartypants = true 154 | fractions = true 155 | smartDashes = true 156 | plainIDAnchors = true 157 | -------------------------------------------------------------------------------- /content/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2016-03-08T21:07:13+01:00 3 | title: 以太坊知识库 4 | type: index 5 | weight: 0 6 | --- 7 | 8 | 本站属于[深入浅出博客](https://learnblockchain.cn/)下的以太坊技术站,打造**全面**的[以太坊中文知识库](https://learnblockchain.cn/eth/index.html),为中国区块链发展贡献力量! 欢迎任何人加入我们! 9 | 10 | 我在学习以太坊相关知识时总难以找到高质量内容,所以我希望有一个网站能收录以太坊相关的内容,方便更多人检索。 11 | 12 | 希望朋友们在这里能有所收获,当然本站内容依旧在缓慢更新和维护中,欢迎任何人提交你们所指定的内容。 13 | 14 | ## 如果贡献 15 | 16 | 任何人都可以将你所知道的,对别人有价值的内容提交到本项目中,也非常愿意更多地人来更换的维护好以太坊的资源导航。 17 | 18 | 你有三种方式来贡献你的内容: 19 | 20 | 1. 如果你看到某一内容描述不正确,你想修改(如错别字)。你只需要点击页面底部的【点击反馈问题】便可快速修改。 21 | 2. 如果你新的内容希望本项目收录(如文章、网站、教程),可以创建关于内容的 ISSUE 即可。 22 | 3. 当然你也可以Fork 项目后,修改内容并提交 PR。 23 | 24 | ## 贡献者 25 | 26 | 1. [虞双齐](https://github.com/ysqi) 是本站创建者,现负责站点管理和内容更新。 27 | 2. 下一个就是你! 28 | -------------------------------------------------------------------------------- /content/about.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2016-03-09T20:10:46+01:00 3 | title: 关于本站 4 | weight: 9001 5 | --- 6 | 7 | 8 | 本站属于[深入浅出博客](https://learnblockchain.cn/)下的以太坊技术站,打造**全面**的[以太坊资中文知识库](https://learnblockchain.cn/eth),为中国区块链发展贡献力量! 9 | 欢迎任何人加入我们! 10 | 11 | ## 如果贡献 12 | 13 | 任何人都可以将你所知道的,对别人有价值的内容提交到本项目中,也非常愿意更多地人来更换的维护好以太坊的资源导航。 14 | 15 | 你有三种方式来贡献你的内容: 16 | 17 | 1. 如果你看到某一内容描述不正确,你想修改(如错别字)。你只需要点击页面底部的【点击反馈问题】便可快速修改。 18 | 2. 如果你新的内容希望本项目收录(如文章、网站、教程),可以创建关于内容的 ISSUE 即可。 19 | 3. 当然你也可以Fork 项目后,修改内容并提交 PR。 20 | 21 | ## 贡献者 22 | 23 | 1. [虞双齐](https://github.com/ysqi) 是本站创建者,现负责站点管理和内容更新。 24 | 2. 下一个就是你! 25 | 26 | ## 本站更新历史 27 | 28 | 1. 2019年11月10日:上线 29 | 30 | ## 版权声明 31 | 32 | 本站文章均采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。 33 | 34 | 35 | 知识共享许可协议 36 | -------------------------------------------------------------------------------- /content/architecture/ABI.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "ABI" 3 | date: 2019-10-21T06:07:06+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "ABI" 8 | parent: "jishu" 9 | --- 10 | 11 | 12 | {{}} 13 | 马上就会编辑 14 | {{}} -------------------------------------------------------------------------------- /content/architecture/Etahash算法.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Etahash算法" 3 | date: 2019-10-21T06:07:36+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "Etahash算法" 8 | parent: "jishu" 9 | --- 10 | 11 | 12 | {{}} 13 | 马上就会编辑 14 | {{}} -------------------------------------------------------------------------------- /content/architecture/NatSpec规定.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "NatSpec规定" 3 | date: 2019-10-21T05:44:53+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "NatSpec" 8 | parent: "infrastucture" 9 | --- 10 | 11 | 12 | {{}} 13 | 马上就会编辑 14 | {{}} -------------------------------------------------------------------------------- /content/architecture/RLP编码.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "RLP编码" 3 | date: 2019-10-21T06:05:22+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "RLP编码" 8 | parent: "jishu" 9 | --- 10 | 11 | 12 | {{}} 13 | 马上就会编辑 14 | {{}} -------------------------------------------------------------------------------- /content/architecture/URLHint协议.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "URL" 3 | date: 2019-10-21T05:44:38+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "URLHint协议" 8 | parent: "infrastucture" 9 | --- 10 | 11 | 12 | {{}} 13 | 马上就会编辑 14 | {{}} -------------------------------------------------------------------------------- /content/architecture/devp2p.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Devp2p" 3 | date: 2019-10-21T05:46:33+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "devp2p" 8 | parent: "networking" 9 | --- 10 | 11 | 12 | {{}} 13 | 马上就会编辑 14 | {{}} -------------------------------------------------------------------------------- /content/architecture/libp2p.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Libp2p" 3 | date: 2019-10-21T05:46:23+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "libp2p" 8 | parent: "networking" 9 | --- 10 | 11 | 12 | {{}} 13 | 马上就会编辑 14 | {{}} -------------------------------------------------------------------------------- /content/architecture/solidity.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Solidity" 3 | date: 2019-10-21T06:06:57+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "solidity" 8 | parent: "jishu" 9 | --- 10 | 11 | 12 | {{}} 13 | 马上就会编辑 14 | {{}} -------------------------------------------------------------------------------- /content/architecture/swarm.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Swarm" 3 | date: 2019-10-21T06:08:34+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "swarm" 8 | id: "swarm" 9 | parent: "architecture" 10 | --- 11 | 12 | 13 | {{}} 14 | 马上就会编辑 15 | {{}} -------------------------------------------------------------------------------- /content/architecture/swarm介绍.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Swarm介绍" 3 | date: 2019-10-21T06:09:12+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "swarm介绍" 8 | parent: "swarm" 9 | --- 10 | 11 | 12 | {{}} 13 | 马上就会编辑 14 | {{}} -------------------------------------------------------------------------------- /content/architecture/swarm技术.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Swarm技术" 3 | date: 2019-10-21T06:09:35+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "swarm技术" 8 | parent: "swarm" 9 | --- 10 | 11 | 12 | {{}} 13 | 马上就会编辑 14 | {{}} -------------------------------------------------------------------------------- /content/architecture/代码分析工具.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "代码分析工具" 3 | date: 2019-10-21T05:35:24+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "代码分析工具" 8 | parent: "jishu" 9 | --- 10 | 11 | 12 | {{}} 13 | 马上就会编辑 14 | {{}} -------------------------------------------------------------------------------- /content/architecture/以太坊区块链规范.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "以太坊区块链规范" 3 | date: 2019-10-21T05:44:00+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "以太坊区块链规范" 8 | parent: "infrastucture" 9 | --- 10 | 11 | 12 | {{}} 13 | 马上就会编辑 14 | {{}} -------------------------------------------------------------------------------- /content/architecture/以太坊技术.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "以太坊技术" 3 | date: 2019-10-21T05:47:09+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "以太坊技术" 8 | identifier: "jishu" 9 | parent: "architecture" 10 | --- 11 | 12 | 13 | {{}} 14 | 马上就会编辑 15 | {{}} -------------------------------------------------------------------------------- /content/architecture/基础设施.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "基础设施" 3 | date: 2019-10-21T06:00:17+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "基础设施" 8 | identifier: "infrastucture" 9 | parent: "architecture" 10 | --- 11 | 12 | 13 | {{}} 14 | 马上就会编辑 15 | {{}} -------------------------------------------------------------------------------- /content/architecture/存储.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "存储" 3 | date: 2019-10-21T06:06:50+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "存储" 8 | parent: "jishu" 9 | --- 10 | 11 | 12 | {{}} 13 | 马上就会编辑 14 | {{}} -------------------------------------------------------------------------------- /content/architecture/客户端地址交换协议.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "客户端地址交换协议" 3 | date: 2019-10-21T05:44:26+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "客户端地址交换协议" 8 | parent: "infrastucture" 9 | --- 10 | 11 | 12 | {{}} 13 | 马上就会编辑 14 | {{}} -------------------------------------------------------------------------------- /content/architecture/挖矿.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "挖矿" 3 | date: 2019-10-21T05:45:15+08:00 4 | draft: false 5 | --- 6 | 7 | -------------------------------------------------------------------------------- /content/architecture/授权.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "授权" 3 | date: 2019-10-21T05:45:40+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "授权" 8 | parent: "architecture" 9 | --- 10 | 11 | 12 | {{}} 13 | 马上就会编辑 14 | {{}} -------------------------------------------------------------------------------- /content/architecture/果冻纸皮书.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "果冻纸皮书" 3 | date: 2019-10-21T05:40:55+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "果冻纸皮书" 8 | parent: "architecture" 9 | --- 10 | 11 | 12 | {{}} 13 | 马上就会编辑 14 | {{}} -------------------------------------------------------------------------------- /content/architecture/树莓派.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "树莓派" 3 | date: 2019-10-21T05:45:06+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "树莓派" 8 | parent: "architecture" 9 | --- 10 | 11 | 12 | {{}} 13 | 马上就会编辑 14 | {{}} -------------------------------------------------------------------------------- /content/architecture/网络.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "网络" 3 | date: 2019-10-21T06:02:55+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "网络" 8 | identifier: "networking" 9 | parent: "architecture" 10 | --- 11 | 12 | 13 | {{}} 14 | 马上就会编辑 15 | {{}} -------------------------------------------------------------------------------- /content/architecture/网络协议.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "网络协议" 3 | date: 2019-10-21T05:46:12+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "网络协议" 8 | parent: "networking" 9 | --- 10 | 11 | 12 | {{}} 13 | 马上就会编辑 14 | {{}} -------------------------------------------------------------------------------- /content/architecture/联盟链.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "联盟链" 3 | date: 2019-10-21T05:45:50+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "NatSpec规定" 8 | parent: "infrastucture" 9 | --- 10 | 11 | 12 | {{}} 13 | 马上就会编辑 14 | {{}} -------------------------------------------------------------------------------- /content/architecture/蜜语whipser.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "蜜语whipser" 3 | date: 2019-10-21T06:08:09+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "蜜语whipser" 8 | parent: "jishu" 9 | --- 10 | 11 | 12 | {{}} 13 | 马上就会编辑 14 | {{}} -------------------------------------------------------------------------------- /content/architecture/褐皮书.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "褐皮书" 3 | date: 2019-10-21T05:40:32+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "褐皮书" 8 | parent: "architecture" 9 | --- 10 | 11 | 12 | {{}} 13 | 马上就会编辑 14 | {{}} -------------------------------------------------------------------------------- /content/architecture/设计理念.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "设计理念" 3 | date: 2019-10-21T05:41:31+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "设计理念" 8 | parent: "architecture" 9 | --- 10 | 11 | 12 | {{}} 13 | 马上就会编辑 14 | {{}} -------------------------------------------------------------------------------- /content/architecture/黄皮书.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "黄皮书" 3 | date: 2019-10-21T05:34:28+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "黄皮书" 8 | parent: "architecture" 9 | --- 10 | 11 | 12 | {{}} 13 | 马上就会编辑 14 | {{}} -------------------------------------------------------------------------------- /content/architecture/默克尔树.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "默克尔树" 3 | date: 2019-10-21T06:06:01+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "默克尔树" 8 | parent: "jishu" 9 | --- 10 | 11 | 12 | {{}} 13 | 马上就会编辑 14 | {{}} -------------------------------------------------------------------------------- /content/basic/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2016-03-09T00:11:02+01:00 3 | title: "以太坊新手入门" 4 | weight: 100 5 | menu: 6 | main: 7 | identifier : "" 8 | parent: "basic" 9 | --- 10 | 11 | {{}} 12 | 了解区块链和以太坊基础知识,零门槛阅读。 13 | {{}} -------------------------------------------------------------------------------- /content/basic/买币.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "买币" 3 | date: 2019-10-21T05:29:08+08:00 4 | weight: 1006 5 | menu: 6 | docs: 7 | name: "买币" 8 | parent: "basic" 9 | --- 10 | 11 | 为了与以太坊网络进行交互,你将需要拥有[以太币]({{}})。 12 | 除非你在采矿,否则获取以太币的唯一方法是从拥有以太币的人那里获得。 13 | 14 | 以下是加密货币交易所的列表,你可以在其中获取法定或加密货币的以太币。 15 | {{}} 16 | 强烈建议你将拥有的以太币的账户存储在硬件钱包中! 17 | {{}} 18 | 19 | ## 国内-币安 20 | 21 | [币安 Binance](https://www.binancezh.com/cn),国际领先的区块链数字资产交易平台,向全球提供广泛的数字货币交易、区块链教育、区块链项目孵化、区块链资产发行平台、区块链研究院以及区块链公益慈善等服务,目前用户覆盖全球180多个国家和地区,以140万单/秒的核心内存撮合技术,是全球加密货币交易速度最快的平台之一,也是全球加密货币交易量最大的平台之一。 22 | 23 | 币安始终坚持将用户利益放在第一位,致力于提供安全、公平、开放、高效的区块链数字资产交易环境。同时以区块链为核心,建立全方位的区块链生态系统,Binance将和Binance用户一起开创新的区块链世界,共同创造历史。 24 | 25 | **买币教程**:[在币安购买以太币](https://www.binancezh.com/cn/buy-Ethereum)? 26 | 27 | ## 国内-火币 28 | 29 | [火币全球专业站](https://www.huobi.vn/zh-cn/),是火币集团旗下服务于全球专业交易用户的创新数字资产交易平台,致力于发现优质的创新数字资产投资机会,目前提供四十多种数字资产品类的交易及投资服务,总部位于新加坡,由火币全球专业站团队负责运营。火币集团是一家具有全球竞争力与影响力的数字资产综合服务商,为超过130个国家百万级用户提供优质服务。在新加坡、香港、韩国、日本等多个国家和地区均有独立的交易业务和运营中心。在技术平台、产品支线、安全风控体系、运营及客户服务体系等方面,火币集团在全球均处于领先地位。 30 | 31 | **买币教程**:[在火币购买以太币](https://huobiglobal.zendesk.com/hc/zh-cn) 32 | 33 | ## 国内-OKEX 34 | 35 | [OKEX](https://www.okex.com)是全球著名的数字资产交易平台之一,主要面向全球用户提供比特币、莱特币、以太币等数字资产的现货和衍生品交易服务,隶属于OKEX Technology Company Limited。 OKEX创立时,获得了世界顶级投资人Tim Draper参与设立的创业工场百万美金的天使投资,Tim Draper先生同时也是Hotmail、百度、特斯拉等世界顶级企业的投资人。2014年初,OKEX获得了中国著名的风险投资基金策源创投、香港上市公司美图(01357.HK)创始人旗下的隆领投资千万美元的A轮投资。 36 | 37 | **买币教程**: [在 OKEX 购买以太币](https://okexsupport.zendesk.com/hc/zh-cn/articles/115003158672) 38 | 39 | ## 国外-Coinbase Pro 40 | 41 | [Coinbase](https://pro.coinbase.com/) 在收购了 Paradex 之后,Coinbase 决定关闭 GDAX 数字资产平台、并推出全新的“专业加密货币交易所”Coinbase Pro 。鉴于当前两个平台都非常活跃,这一变动被定在了6月29号实施。新平台将保留GDAX的所有功能,同时引入一些新特性。除了更加流畅和直观的设计,新平台还声称提供简化的存取款功能、可访问改进的图表和历史数据、以及改版后的投资组合页面。Coinbase 希望用“Pro”来重新塑造一下自己的品牌力。 42 | 43 | 44 | 还有需要加密货币交易所可以购买以太币,就不一一说明。购买加密货币需要认准信誉高、稳定、安全的大型交易,避免风险。 45 | 46 | 47 | ## 全球交易所综合排名 48 | 49 | |No|交易所|排名等级|24H额(¥)|24H涨跌|资产(¥)|交易对| 50 | |--- |--- |--- |--- |--- |--- |--- | 51 | |1|币安网|9|96.79亿|+17.35%|125.13亿|560| 52 | |2|火币全球站|9|307.43亿|+32.19%|98.56亿|565| 53 | |3|Coinbase Pro|8|9.20亿|+83.52%|156.58亿|53| 54 | |4|BitMEX|8|157.77亿|+63.56%|226.02亿|11| 55 | |5|OKEX|8|201.42亿|+28.53%|2.49亿|441| 56 | |6|B网(Bittrex)|8|1.07亿|+53.93%|84.28亿|349| 57 | |7|Bitfinex|7|5.63亿|+97.50%|71.17亿|344| 58 | |8|ZB网|7|38.82亿|-6.80%|21.19亿|165| 59 | |9|Bitstamp|7|5.68亿|+81.79%|8.49亿|14| 60 | |10|bitFlyer|7|2.14亿|+54.99%|109.86亿|4| 61 | |11|K网(Kraken)|7|6.35亿|+97.75%|89.55亿|87| 62 | |12|Upbit|7|6.86亿|+81.84%|4.01亿|319| 63 | |13|P网(Poloniex)|7|9984.30万|+32.50%|8.17亿|93| 64 | |14|HitBTC|7|21.39亿|+22.87%|2395.12万|642| 65 | |15|Bithumb|7|18.96亿|+96.75%|12.10亿|98| 66 | |16|MXC|7|59.19亿|-1.71%|3.53亿|215| 67 | |17|Liquid|7|8.47亿|+37.02%|1.15亿|83| 68 | |18|gate.io|7|2.33亿|+74.51%|14.40亿|346| 69 | |19|ZG.com|6|37.64亿|-2.32%|1.16亿|161| 70 | |20|双子星|6|5043.49万|+73.46%|41.61亿|5| 71 | |21|Bibox|6|57.03亿|+10.90%|5846.23万|169| 72 | |22|BiKi|6|58.05亿|-0.12%|1.39亿|249| 73 | |23|IDAX|6|25.37亿|+8.92%|1.13亿|155| 74 | |24|Bit-Z|6|48.08亿|+0.32%|7063.20万|175| 75 | |25|ZBG|6|53.87亿|+22.84%|2.82亿|109| 76 | |26|Bitget|6|102.18亿|-51.29%|7063.20万|25| 77 | |27|BKEX|6|75.66亿|+44.70%|3.53亿|133| 78 | |28|币赢国际站|6|58.07亿|-3.05%|3726.18万|105| 79 | |29|币团网(Bituan)|6|138.40亿|-12.61%|985.82万|51| 80 | |30|T网|6|83.44亿|+44.17%|1.05亿|65| 81 | |31|猪蹄(ZT.COM)|6|98.80亿|+16.49%|3923.54万|103| 82 | |32|A网(AOFEX)|6|107.31亿|+30.56%|1642.07万|113| 83 | |33|CoinTiger|6|61.35亿|+23.23%|157.23万|174| 84 | |34|瓦特交易所|6|84.69亿|+16.42%|1075.25万|114| 85 | |35|BG交易所|6|6亿|+0.81%|13.95亿|30| 86 | |36|ZZEX|6|36.66亿|+18.41%|7063.20万|60| 87 | |37|BTB.io|6|75.10亿|+13.25%|3657.06万|50| 88 | |38|LBank|6|53.23亿|+39.45%|5023.97万|110| 89 | |39|DigiFinex|6|60.77亿|+55.57%|86.06万|263| 90 | |40|雷盾交易所|6|36.94亿|+19.89%|2118.96万|71| 91 | |41|FUBT|6|38.72亿|+28.98%|3009.74万|121| 92 | |42|A网(AEX)|6|13.45亿|+2.00%|6212.72万|126| 93 | |43|HCoin|6|50.50亿|+4.05%|3812.27万|53| 94 | |44|BitMart|5|48.37亿|+41.39%|567.26万|181| 95 | |45|BIONE|5|30.44亿|+11.09%|1875.84万|36| 96 | |46|Q网|5|47.60亿|+3.16%|5650.56万|152| 97 | |47|ZG.TOP|5|58.54亿|+2.44%|1.36亿|37| 98 | |48|东方交易所|5|12.70亿|+42.99%|4689.01万|35| 99 | |49|BigONE|5|42.47亿|+20.22%|6585.23万|122| 100 | |50|XT网|5|17.95亿|+16.49%|846.64万|190| 101 | |51|YoBit|5|2.09亿|+46.45%|7028.67万|104| 102 | |52|BFX合约平台|5|42.70亿|+3.38%|3.75亿|29| 103 | |53|VVBTC|5|46.05亿|+40.65%|3602.23万|49| 104 | |54|EXX|5|84.89亿|+42.01%|3531.60万|64| 105 | |55|KuCoin|5|2.04亿|+1.46%|1.31亿|284| 106 | |56|牛顿交易所|5|267.84亿|+7.68%|7063.20万|19| 107 | |57|FCoin|5|42.99亿|-51.02%|877.99万|105| 108 | |58|Coinone|5|1.92亿|+57.58%|869.64万|43| 109 | |59|COINBIG|5|37.08亿|+9.67%|2189.59万|49| 110 | |60|大币网|5|44.11亿|+13.82%|845.53万|93| 111 | |61|胖比特|5|33.77亿|-2.98%|3531.60万|105| 112 | |62|CoinBene|5|136.82亿|+32.96%|2673.08万|167| 113 | |63|Coincheck|5|7551.52万|+40.38%|101.73万|1| 114 | |64|BCEX|5|41.26亿|+2.90%|71.34万|58| 115 | |65|热币全球|5|36.59亿|+12.84%|200.49万|98| 116 | |66|OCX|5|42.14亿|+12.07%|587.11万|47| 117 | |67|99EX|5|11.13亿|-9.25%|3531.60万|62| 118 | |68|GOKO|5|37.63亿|+20.20%|394.03万|93| 119 | |69|CC Global|5|11.91亿|+18.97%|545.58万|20| 120 | |70|币多多|5|9.79亿|+44.41%|1.08亿|33| 121 | |71|币对|5|106.39亿|+127.95%|2337.65万|27| 122 | |72|GJ比特国际|5|23.99亿|-2.96%|3531.60万|62| 123 | |73|CEO交易所|5|4.01亿|+32.26%|8013.19万|96| 124 | |74|比太网|4|70.97亿|+3.70%|3531.60万|16| 125 | |75|Bitbank|4|1.26亿|+50.24%|--|8| 126 | |76|C网(CITEX)|4|2.52亿|+14.21%|3236.94万|141| 127 | |77|币星BitSG|4|35.59亿|+21.99%|780.14万|36| 128 | |78|币帝|4|6.30亿|-9.33%|375.85万|22| 129 | |79|Zaif|4|2707.55万|+58.23%|--|15| 130 | |80|币权全球站|4|59.97亿|+299.61%|7257.67万|85| 131 | |81|新币全球站|4|4.07亿|-14.43%|226.95万|15| 132 | |82|龙网|4|16.14亿|+8.99%|18.68万|90| 133 | |83|RightBTC|4|47.36亿|+9.62%|--|16| 134 | |84|ZDCoin|4|47.82亿|+19.98%|353.16万|133| 135 | |85|牛盾交易所|4|37.06亿|+22.79%|3531.60万|63| 136 | |86|币网|4|45.52亿|+61.05%|2205.92万|138| 137 | |87|Exmo|4|1.64亿|+7.98%|--|142| 138 | |88|QB.COM|4|22.03亿|+36.01%|--|20| 139 | |89|星客|4|17.69亿|+30.83%|1408.65万|70| 140 | |90|GGBTC|4|3.63亿|-2.21%|13190.95|32| 141 | |91|无界交易所|4|9.26亿|+1.39%|5296.51万|10| 142 | |92|海特币|4|6.27亿|+1.63%|1139.07万|11| 143 | |93|HPX|4|9.97亿|+0.95%|10.33万|40| 144 | |94|BHEX|4|10.78亿|+17.27%|2539.45万|45| 145 | |95|Hubi|4|21.33亿|+48.34%|--|39| 146 | |96|BTCC|4|137.78亿|0%|--|40| 147 | |97|IDCM|4|22.71亿|+16.67%|--|66| 148 | |98|法拉第|4|37.81亿|+19.66%|706.32万|60| 149 | |99|币钻|4|15.01亿|-0.20%|755.76万|24| 150 | |100|牛市|4|1.94亿|+1.03%|1334.44万|32| 151 | 152 | > 上面表格数据来源于非小号网站 2019-10-21 23:00 时数据。 -------------------------------------------------------------------------------- /content/basic/交易.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "交易" 3 | date: 2019-10-21T05:29:55+08:00 4 | weight: 1008 5 | menu: 6 | docs: 7 | name: "交易" 8 | parent: "basic" 9 | --- 10 | 11 | 如果你想和以太坊这个全球网络进行交互,那么需要你发送交易才能将消息送入到以太坊中来。 12 | 比如:转账、购买加密猫、抵押以太币等等。 13 | 14 | ## 签名 15 | 16 | 如何才能证明交易是你发送的,而不是别人恶意使用的呢? 17 | 因此在发送交易时,需要你使用你的账户私钥对这个交易消息签名。 18 | 以太坊网络在接收到你这边交易消息时,会优先检查交易签名是否正确,是否来自你的签名。 19 | 只有合法的签名,交易才能在以太坊网络中流动,等待矿工将交易收集到区块中。 20 | 21 | ## 燃料 22 | 23 | 以太币的一个重要用途是,支付交易手续费,而每笔交易的交易手续费并不是固定的。 24 | 而是根据交易在被矿工收集到区块中时所消耗的资源来动态技术。 25 | 26 | 交易进入区块需要在一个每个以太坊网络节点都存在的以太坊虚拟机(EVM)中运行计算。 27 | 而推动计算则需要消耗燃料来提供动力。 28 | EVM中的任何操作都会消耗主机的CPU,磁盘读写,内存。 29 | 为了维持 EVM 运作,则需要支付手续费购买足够的 Gas 燃料。 30 | 31 | 为了防止主机“过载”,EVM上的每个操作都会消耗一定量的气体。 32 | 访问内存或写入磁盘的燃料消耗各不相同,每个EVM操作员都会为执行合同期间消耗的燃料设定上限。 33 | 因此,如果恶意操作者精心制作了进入无限循环的智能合约,则每个循环都会消耗一些燃料并最终达到极限,此时EVM将中止该合约的执行。本质上,合同越大,越复杂,合同执行的操作越多,运行合同的成本就越高。 34 | 35 | 这里使用燃料价格创建收费市场,允许用户自己决定愿意为每单位的燃料支付多少费用。 36 | 由于燃料限制,收费市场基本决定挖矿开采什么交易,因为希望获利的矿工会选择费用最高的交易。 37 | 38 | 每笔交易你所需要支付的手续费为 燃料消耗量(GasUsed) * 每单位你愿意支付的单价(GasPrice)。 39 | 40 | 更多内容可参见:[理解以太坊Gas和手续费](https://yushuangqi.com/dapps/ethereum-gas-and-fee.html) 41 | 42 | ## 交易属性 43 | 44 | 交易还有许多重要的组成部分需要理解。 45 | 46 | |术语 |描述| 47 | |---|---| 48 | |燃料 Gas | EVM完成交易处理所需要消耗的燃料| 49 | |燃料单价 Gas Price | 你愿意为交易处理所支付的单位Gas的报价,单位 Gwei| 50 | |交易手续费| Gas used * Gas Price| 51 | |燃料上限 Gas Limit |你所设置的交易燃料消耗上限| 52 | |区块燃料上限 Gas Block Limit|一个区块累计允许可以消耗的燃料上限| 53 | 54 | ## 费用市场 55 | 56 | 因为一个区块是有燃料消耗限制的,因此一个区块所包含的交易有限。 -------------------------------------------------------------------------------- /content/basic/以太坊.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "什么是以太坊" 3 | date: 2019-10-19T22:40:51+08:00 4 | weight: 1001 5 | draft: false 6 | menu: 7 | docs: 8 | name: "以太坊" 9 | parent: "basic" 10 | --- 11 | 12 | 以太坊是在比特币的基础上进一步发展,目前已经成为最受欢迎的智能合约平台。 13 | 以太坊团队的目标是构建一个对开发者更友好、更易于创新的区块链系统,这也是以太坊生态系统如此繁荣的重要原因。 14 | 想要参与到区块链浪潮当中的开发者无需对区块链的专业知识就可以在以太坊平台上编写智能合约,搭建属于自己的去中心化应用。 15 | 16 | 以太坊的诞生是区块链技术发展史上的重要里程碑,使得区块链在非金融领域的普遍应用成为可能,同时也被认为是区块链2.0时代的标识。 17 | 18 | ![以太坊](/images/content/ethereum-home.png) 19 | 20 | ## 起源 21 | 22 | 以太坊最初由 [Vitalik Buterin](./) 在2013年提出。Vitalik 原本是一名比特币社区的程序员,曾向比特币核心开发人员主张比特币需要一种脚本语言来进行应用程序开发,但当未得到他们的同意时,他提议开发一个更通用的脚本语言的新平台。 23 | 24 | 2013年末,19岁的 Vitalik 给他的好友们发了一份白皮书[^1],建议设计一种新的比特币。这款新的比特币将基于通用的编程语言,可以用来创建各种各样的应用,比如社交、交易、游戏…… 25 | 26 | Vitalik 发给了15个人,这15个人又相继发给了他们的好友。一传十,十传百,Vitalik 的想法很快就在比特币社区里炸开了锅。 27 | 28 | Vitalik 本以为自己的想法还存在不少漏洞,谁想到竟然受到了一致好评。不少人竟为了这个前卫的想法兴奋到不能自已,亲自找上门希望和Vitalik 一起合作。 29 | 30 | 彼时的 Vitalik ,刚刚获得10万美元Thiel奖学金[^3](Paypal创始人、硅谷投资大佬 Peter Thiel 为鼓励20岁以下年轻人创业的奖学金)。这笔钱还没有焐热,就被 Vitalik 用来开发一个去中心化、基于区块链技术的计算平台,取名以太坊(Etherum)。 31 | 32 | 然后,在2014年,以太坊团队为了获取开发资金,通过由比特币换取以太币的方式公开募资,也就是后来风行一时风的ICO(Initial Coin Offering)。 33 | 最初以太坊程序是由一间位在瑞士的公司 Ethereum Switzerland GmbH 开发[^2],之后转移至一个非营利机构“以太坊基金会”(Ethereum Foundation)。 34 | 35 | ## 以太坊开发计划 36 | 37 | 1. 以太坊公链在2015年7月30日启动。最初的以太坊版本称为边境(Frontier,也有“前锋”的意思),用的是工作量证明(proof-of-work)算法,但未来预期会转换成权益证明(proof-of-stake)。此时的以太坊还不太成熟,但是可以进行基本的挖矿,学习和试验。系统运行之后,吸引了更多的人关注并参与到开发中来,以太坊作为一个应用平台,需要更多的人去开发自己的去中心化应用来实现以太坊本身的价值。随着人气渐旺,以太坊的价值也水涨船高。 38 | 2. 2016年3月14日,以太坊进行第二次分叉,发布了第一个正式稳定版本,称作“家园”(Homestead),100%采用PoW挖矿,但是为了防止在未来矿工联合抵制以太坊从PoW到PoS转变升级,在挖矿的难度设计中故意引入了难度炸弹(Difficulty Bomb)。 39 | 3. 2019年,以太坊划实施君士坦丁堡硬分叉获得一致同意,这是一个刺激以太坊网络改变其核心共识机制算法的炸弹代码。一旦炸弹爆炸,会让以太坊进入冰河时期。以后以太坊网络创建区块的难度将不断提升,使得出块速度不断下降,最终减慢到完成停止。从而强制督促转换到Pos共识。 40 | 4. 当以太坊升级到 Serenity 版本时,PoS将完成在以太坊中运行,以太坊归于宁静,将拥有不错的交易速度,是最后一个里程碑。也许在2019年得以实现。 41 | 42 | ## 重要时间表 43 | 44 | 1. 2013年,Vitalik 设计以太坊协议架构。 45 | 2. 2014年1月25日,在迈阿密举行的北美比特币会议上,Vitalik 正式宣布了以太坊概念。同时,他宣布将与Gavin Wood博士和Jeffrey Wilcke合作,后者现在被认为是主要的核心开发人员。[会议视频](https://www.youtube.com/watch?v=l9dpjN3Mwps) 46 | 3. 2014年4月,Vitalik 发布[以太坊黄皮书](https://github.com/yuange1024/ethereum_yellowpaper),标志以太坊系统原型设计完成。 47 | 4. 2014年7月结束以太坊为期42天的以太币预售结束。一共筹集到 31529.36369551 个比特币,一共售出 60102216个以太币,当时价值 18,439,086 美元。销售所得首先用于偿还日益增加的法律债务,回报开发者们数月以来的努力,以及资助以太坊的持续开发。 48 | 5. 2014年11月,以太坊开发者在柏林举办[Devcon-0](https://blog.ethereum.org/2014/12/05/d%CE%BEvcon-0-recap/)活动,旨在汇集来自世界各地的以太坊开发者,讨论了各种以太坊技术主题。在这次活动中看到的演示文稿都有一些使以太坊更加可靠、安全和可扩展的计划。 49 | 6. 2015年4月,[ÐΞVgrants 计划](https://blog.ethereum.org/2015/04/07/devgrants-help/)开展,对所有为以太坊平台和基于以太坊的项目所在贡献提供资金。旨在奖励和支持为以太坊做出贡献的开发者。 50 | 7. 2015年7月,Frontier发布,开发者开始编写智能合约和去中心化应用以部署在以太坊实时网络上。这是以太坊项目的第一个里程碑,是一个非常成功的测试网络,开发者们立即开始提出方案改进以太坊系统。 51 | 8. 2015年11月,[Devcon-1](https://www.youtube.com/playlist?list=PLJqWcTqh_zKHQUFX4IaVjWjfT2tbS4NVk)在伦敦举行,有一百多个演讲者,吸引了四百多个参与者。这次会议让以太坊真正受益的是,瑞银、IBM和微软等大公司出席了会议。是区块链技术成为主流的时刻,以太坊代表区块链前沿技术。 52 | 9. 2016年3月, 以太坊 homestead 版发布,是对以太坊网络改进。 53 | 11. 2016年5月,The DAO 项目在为期28天的全球众筹中筹集到破纪录的1.5亿美元,此时以太坊获得了大量的媒体报道。 54 | 12. 2016年6月,黑客发起针对The DAO智能合约多个漏洞的[攻击](https://www.8btc.com/article/97819)。引起社区激烈争辩。 55 | 13. 2016年7月,由于上月攻击,硬分叉方案公布,超过85%的算力支持硬分叉,以太坊硬分叉成功,网络分离成两个不同组:以太坊(ETH)和以太坊经典(ETC)。 56 | 14. 2017年2月,企业以太坊联盟宣布,微软、其他主要技术和银行结成联盟,推动以太坊区块链技术。 57 | 15. 2017年5月,在第一家企业以太坊联盟宣布四个月后,又推出了两个联盟,许多新的知名公司和客户也加入了其中。 58 | 16. 2017年5月19日 以太坊价格首次突破100美元大关。 59 | 17. 2017年10月16日「Metropolis Part 1:Byzantium」,以太坊平台拜占庭共识第一部分推出。 60 | 18. 2018年1月14日 加密货币估值到达峰值,以太币售价1,418美元,每日交易量接近100亿美元,而市值为1350亿美元。 61 | 19. 2018年4月6日 机密货币整体低迷,一枚以太币价格低于400美元。 62 | 20. 2018年12月7日 举行的核心开发者会议上,以太坊的开发团队成员就君士坦丁堡硬分叉的激活时间达成了一致。 63 | 64 | ## 以太坊价值 65 | 66 | 区块链技术是比特币的底层技术,这一技术第一次被描述是在中本聪2008年发表的白皮书“比特币,点对点电子现金系统”中。区块链技术更多的一般性用途在原书中已经有所讨论,但直到2013年,区块链技术才作为通用术语出现。 67 | 68 | 比特币是基于点对点网络的一个电子现金系统,且不依赖任何第三方信任中介。 69 | 点对点网络中节点接收到其他节点广播的区块时,通过PoW共识算法校验区块合法性,并根据算力最大原则动态维护一条最长链。 70 | 由于网络等不确定性原因,每个节点的账本不完成一致, 71 | 但在共识机制驱动下是趋于一致的。 72 | 73 | 在基于密码学技术上的PoW共识下,比特币解决了交易双花问题。 74 | 同时,利用程序化的经济激励来刺激更多的人来维护和验证网络,保障区块链的安全与去中心化。 75 | 76 | 比特币系统作为一个去中心化的交易账本,账本中记录着每个地址的交易流水。 77 | 通过签名交易将比特币资产进行转移,实现个体间无需信任基础和第三方中介的金融活动。 78 | 比特币简单有效的解决了去中心化共识问题,随着更多开发者关注,极客们希望将比特币系统用于数字货币转移之外的其他经济活动。 79 | 80 | 随后几年,许多系统在原比特币协议基础进行微创新与修改,添加新功能,独立于比特币运行新的区块链网络。在2013年,比特币社区成员Vitalik Buterin 向比特币核心开发人员主张比特币需要一种脚本语言来进行应用程序开发,进行复杂运算。但当未得到他们的同意时,他提议开发一个更通用的脚本语言的新平台。 81 | 82 | 2014年, Vitalik Buterin 和 Gavin Wood、Jeffrey Wilcke 完成新平台的架构设计与运行规则,通过实施图灵完备的语言实现一个区块链架构的可编程的智能合约平台,该平台即为当前高热度的以太坊。 83 | 84 | 智能合约概念并非首次出现,而是于1994年由Nick Szabo首次提出。智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,而这些交易可追踪且不可逆转。 85 | 86 | 超前的概念,在当时未能有系统能实现,区块链技术却让大家看到了希望,以太坊引入智能合约,实现经济活动的可编程性和抹除金融中介。 87 | 以太坊衍生了**Token 经济**,使区块链技术从只能进行数字货币的转移时代迈入了智能合约时代。 88 | 89 | 90 | ## 以太坊如何工作 91 | 92 | 以太坊融合了比特币系统的技术特点,同时自己也进行创新与添加新功能。比特币系统是一个纯粹的交易列表,而以太坊中的交易是基于账户,通过交易改变账户状态,将加密货币资产和数字信息在账户间转移,完成丰富的金融活动,更多细节请阅读[以太坊账户]小节。 93 | 94 | 与比特币一样,当用户需要将资产转移给其他账户时,用户需要对交易签名,并支付一定手续费支付给矿工将交易打包到区块中。 95 | 96 | 更多内容请阅读[以太坊交易流程]小节 97 | 98 | ## 以太坊虚拟机 99 | 100 | **以太坊是可编程的区块链**,不同于比特币中预设的货币转移操作。在以太坊中用户可自定义一份操作,以满足自身业务需求。从而可以在以太坊网络中部署运行风格各异的应用程序,此时以太坊便是一个应用平台,是分散的、去中心化的。 101 | 102 | 一份自定义操作如何得以运行,依赖的是以太坊内置的可编程性。 103 | 以太坊中定义并实现一套这些操作指令行为协议,协议内嵌在以太坊程序中, 104 | 当交易需要打包到区块中时,以太坊将启动一个包含协议的子系统, 105 | 将按照交易信息让子系统执行智能合约中的操作指令。 106 | 这个子系统名为“EVM”(Ethereum Virtual Machine),在计算机技术上称之为“虚拟机”, 107 | 在沙盒环境中正确执行操作指令,是“图灵完备的”。 108 | 109 | 这样,开发者便可以利用熟悉的编程语言编写可以运行在以太坊虚拟机上的应用。以太坊作为分布式的区块链网络,所有交易均在所有节点中由虚拟机以相同的指令执行。 110 | 111 | 112 | [^4][^5] 113 | [^1]: [以太坊白皮书]([https://github.com/ethereum/wiki/wiki/White-Paper) 114 | [^2]: [Replacing centralized systems of power and control with new technology](https://www.theepochtimes.com/the-entrepreneur-joe-lubin-coo-of-ethereum_668104.html) 115 | [^3]: [$100k Peter Thiel Fellowship Awarded to Ethereum's Vitalik Buterin](https://www.coindesk.com/peter-thiel-fellowship-ethereum-vitalik-buterin/) 116 | [^4]: https://cryptodaily.co.uk/the-history-of-ethereum 117 | [^5]: https://www.cryptocompare.com/coins/eth 118 | 119 | -------------------------------------------------------------------------------- /content/basic/以太坊网络.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "以太坊网络" 3 | date: 2019-11-02T16:21:03+08:00 4 | weight: 1013 5 | menu: 6 | docs: 7 | name: "网络" 8 | parent: "basic" 9 | identifier: "" 10 | --- 11 | 12 | 被通过p2p网络连接的节点共同维护和确认的区块链是去中心化一致性的基础。 13 | 14 | ## 以太坊网络状态 15 | 16 | [EthStats.net](https://ethstats.net/) 是以太坊网络的实时统计网站,网站上显示了诸如当前块、哈希难度、gas价格和gas消耗等信息。网页上显示的节点仅仅是网络上比较活跃的节点。任何人都可以把自己的节点加入到EthStats的页面上,想了解如何加入,请 [查看加入网络的详细描述](https://github.com/cubedro/eth-netstats) 。 17 | 18 | [EtherNodes.com](https://www.ethernodes.org/) 显示了主网络和测试网络节点数量的当前和历史数据,此外还有一些别的信息。 19 | 20 | [Etherchain.org](https://etherchain.org/nodes) 显示以太坊区块链的实时状态。(译者注:这个网站十分好用,可以查看账户信息,还有API可供使用) 21 | 22 | ## 公有、私有和联盟区块链 23 | 24 | 现在大多数的以太坊工程都是依赖于以太坊的公有链,公有链上有数量巨大的用户、网络节点、货币和市场。然后,也经常会有一些原因使得情况更倾向于使用私有链和联盟链(一些互相信任的参与者之间)。例如:像银行这样的组织,就在寻找以太坊这样的平台作为它们的私有链。 25 | 26 | 下面的章节节选自 [On Public and Private Blockchains](https://blog.ethereum.org/2015/08/07/on-public-and-private-blockchains/) 基于权限分别阐述了三种区块链的不同。 27 | 28 | - **公有链**: 一条公有链就是全世界任何人都可以读取的区块链,世界上任何人都可以发送交易,如果交易是合法的那么都可以被查询到,世界上任何人都可以参与到一致性协商都过程中来,这个过程决定了哪个块会被添加到链上并决定当前的状态。作为集中或准集中信任机制的替代方案,公有链的安全由以下机制共同确保-加密经济学、经济激励和密码学验证,以及工作量证明机制和股权证名机制。在这个原则下,在协商一致性过程中产生的影响和可以承担的经济资源成正比。这样的区块链可以被称为“完全去中心化“的。 29 | - **联盟区块链**: 联盟区块链是指一致性协商的过程是由一些预先选择好的节点控制的区块链,例如:可以想象一个由15家金融机构组成的联盟,其中每一笔交易都需要至少10家机构进行签名,以保证交易的合法性。链上信息的读取权限可以是公开的;可以对成员是受限制的;也可以是混合类型的,例如对于根散列可以通过API允许成员进行有限次的访问,获取部分链状态的加密证明。这类区块链可以被认为是“部分去中心化”的。 30 | - **私有链**: 私有链是一条完全私有的区块链,区块的写权限只属于一个中心化的组织。读权限可以是公开的也可以是任何受限制的程度。例如:公司内部的程序所包含的数据库管理、审计等,这种情形的大多数情况下,对外公开的读权限可能不是必须的,虽然有些情况需要公开审计。 31 | 32 | 虽然私有/联盟链可能和公开链没有任何联系,它们对以太坊软件开发的投资仍然是对整个以太坊生态的贡献,随着时间推移,这些努力会转变为软件改进、分享的知识还有就业机会。 -------------------------------------------------------------------------------- /content/basic/以太币.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "什么是以太币" 3 | date: 2019-10-20T05:52:43+08:00 4 | weight: 1004 5 | menu: 6 | docs: 7 | name: "以太币" 8 | identifier : "" 9 | parent: "basic" 10 | --- 11 | 12 | ## 什么是以太币 13 | 14 | 以太币(ETH 或 Ξ) 是以太坊的原生货币。 这是一种可以通过互联网即时传送的“数字货币”,且成本低廉, 还可用于以上提到的,基于以太坊平台开发的许多应用程序中。 15 | 16 | 在使用以太坊平台上的应用程序时,需要用以太币来支付一定的手续费,用来激励以太坊网络中的矿工。原因是否的手续费越多,矿工越有动力优先处理你的交易。 17 | 18 | 以太币处理当前交易手续费支付,还可以作为价值存储,具有一定的投资价值。可以用做价值交换媒介(比如用于贸易支付)。 19 | 同时以太币也是一种记账单位。 20 | 21 | 获取以太币最简单的方式就是购买。 市面上有许多可以购买以太币的数字货币交易所,但用户需要根据所处地址和付款方式选择合适的交易所。 22 | 23 | 以太币是以太坊中货币的名称,它被用来支付以太坊虚拟机(EVM)计算的费用,它不是被直接消耗掉而是间接的通过购买gas来实现的。 24 | 25 | ## 面额 26 | 27 | 以太坊有一套专门用于以太币面额的度量系统,每种面额都有自己特定的名字(一些来自于计算机科学,一些来自于加密货币)。最小的面额也就是基础单位被称为:Wei。下面是所有面额的列表和价值,通常情况下,ether也被认为是以太币的单位(1e18wei),但是以太坊(Ethereum)不是货币单位,也不是货币。 28 | 29 | | Unit | Wei Value | Wei | 30 | | ----------------------- | --------- | ------------------------- | 31 | | **wei** | 1 wei | 1 | 32 | | **Kwei (babbage)** | 1e3 wei | 1,000 | 33 | | **Mwei (lovelace)** | 1e6 wei | 1,000,000 | 34 | | **Gwei (shannon)** | 1e9 wei | 1,000,000,000 | 35 | | **microether (szabo)** | 1e12 wei | 1,000,000,000,000 | 36 | | **milliether (finney)** | 1e15 wei | 1,000,000,000,000,000 | 37 | | **ether** | 1e18 wei | 1,000,000,000,000,000,000 | -------------------------------------------------------------------------------- /content/basic/创始人.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "以太坊创始人-从小 V 到 V 神的天才成长史" 3 | date: 2019-10-20T06:25:24+08:00 4 | weight: 1003 5 | menu: 6 | docs: 7 | name: "创始人" 8 | parent: "basic" 9 | --- 10 | 11 | [以太坊]({{ref "以太坊.md"}})最初由 Vitalik Buterin 在2013年提出。Vitalik 原本是一名比特币社区的程序员,曾向比特币核心开发人员主张比特币需要一种脚本语言来进行应用程序开发,但当未得到他们的同意时,他提议开发一个更通用的脚本语言的新平台。 12 | 在中国,称他为 V神。 13 | 14 | “我第一次来中国是 2014 年 5 月。那时候,我只看到了矿工和交易所。矿工和交易所已经很强,火币和 OKcoin 已经有 70 多人,但是除了这几个公司以外没有很多有趣的东西。” V 神在博客里写道。 15 | 16 | 当时 V 神来到中国不是来游山玩水,而是为了以太坊的预售做宣传。就像观察的那样,要找就找最靓的仔,V 神首先就拜访了火币的杜均,准备向他详细介绍了以太坊,满怀希望的等待着来自中国的第一笔款项 —— 十万元。可惜,等到的是“你个骗子”的评价,然后被扫地出门。 17 | 18 | ![](https://learnblockchain.cn/static/2019-10-26-23-9-14.png) 19 | 20 | 那时的V神还不是神,即便拍照都是在边缘的位置,不像现在永远的 C 位。一路拜访一路拒绝,最后才找到伯乐“沈波”。沈波不仅给与经济上的支持,还拉着他四处演讲。 21 | 22 | 在上海杨浦区淞沪路创智天地的 InnoSpace,V 神第一次参加中国的加密货币社区的活动上,做了一个多小时的演讲,主题是“二代币及数字加密货币的机会”,场下坐着达鸿飞、初夏虎、徐义吉等诸多后来的区块链大佬。 23 | 24 | 对于新生的“以太坊”和眼前的“神童小 V”,大部分的参会人员心里得到和火币杜均一模一样的结论,“这小屁孩是个骗子,就是来圈钱的。”后来估计都拍断了大腿,就像老猫说的,“99% 的国内比特币圈的人都错过了这次机会”。 25 | 26 | 五年过去了,神通小 V 创造的以太坊,ICO 成为最火的募资方式,智能合约带来了区块链 2.0 狂潮,以太坊也成为了仅次于比特币的第二大数字加密货币,2017 年底达到市值最高峰约为 1380 亿美元。神通小V也成为了仅此于中本聪的第二号人物,于是有了 V 神的传说。 27 | 28 | ## 成长经历 29 | 30 | 1994 年 1 月 31 日,V 神在俄罗斯出生,一直待到 2000 年。为了更好的工作机会,他的父母选择移民加拿大,在那里他的父亲找到了一份与 IT 工程师培训相关的工作,这对他的未来很重要。 31 | 32 | V 神从小就“天赋异禀”,有着超高的智商。小学三年级,大部分人还在努力背诵乘法口诀的时候,V 神已经可以以同龄人两倍的速度进行三位数的乘法运算。于是,老师将他送到了学校的“天才少年班”,专门培养天才设立的班级。在这里,V 神在数学方面的天赋得到蓬勃发展,但是他在社交方面特别笨拙,语速极快,别人很难与他交流。幸好,远离社交的他又有了新的玩具 —— 电脑,这对他的未来很重要。 33 | 34 | ![](https://learnblockchain.cn/static/2019-10-26-23-10-34.png) 35 | 36 | 10 岁的时候,父亲送给他的礼物是一个大盒子 ——电脑,自此打开他的新世界,他像现在的普通小孩一样,成为了网瘾少年。当别的小孩还在现实世界玩耍,他已经开始探索虚拟互联网的世界,疯狂沉迷于用电脑编写小游戏,编写的第一个程序是让球通过弹跳进行射击的游戏。 37 | 38 | ![](https://learnblockchain.cn/static/2019-10-26-23-10-48.png) 39 | 40 | 等经典游戏“魔兽世界”横空出世,13 岁的 V 神早早开启了宅男生活,没日没夜地打游戏。看着要无法自拔的时候,暴雪公司进行了一次游戏更新,取消了他满级的心爱角色“术士”的一项必杀技能,V 神当然不能像个正常少年那样忍气吞声,多次发邮件给暴雪公司的工程师,要求还原这个必杀技,得到统一的答复是“为了游戏的平衡不能回复”。自此,开始思考游戏开发商的中心化霸权—— 说改就改,玩家只能接受或者放弃。而V神选择了放弃玩魔兽世界,这对他的未来很重要。 41 | 42 | ## 与比特币的结缘 43 | 44 | 2011 年,V 神的父亲在自己的软件公司偶然听说了比特币,立马兴奋地向 V 神介绍了比特币。那时候离比特币的诞生才过去两年,他和绝大多数普通人想法一样,认为没有任何价值,不会有任何的前途。但是他的父亲觉得大有前途,为此卖掉了自己的软件公司,成为了一家区块链孵化器公司的联合创始人。这对他的未来很重要。 45 | 46 | 47 | 命中注定的相遇,生活一次又一次的铺垫,多少个“未来很重要的东西”已经准备好,将 V 神导向他唯一的命运。2011 年 3月,V 神开始关注比特币,去中心化的属性是如此让他着迷,他的身影开始频繁出现在比特币的论坛社区中,并开始写一些比特币的文章。但是他没钱买比特币,思路清奇的想到,与一个比特币博客达成协议,每一篇文章的稿费是 5 个比特币,以现在的价格换算差不多4万美元,不过当时一个比特币只有 0.8 美元。最后,因为网站博客关闭,不得不终止这份兼职。 48 | 49 | ![](https://learnblockchain.cn/static/2019-10-26-23-13-45.png) 50 | 51 | 期间,他不仅积累了不少比特币,还认识了很多的朋友,了解了大量关于比特币的知识,有了更为深刻的认识、理解和思考。2011 年 9 月,成为《比特币杂志》的联合创始人,比特币杂志一直是最大的比特币和数字加密货币网络媒体之一。2013 年,V 神一边开始给自己的杂志做撰稿和编辑,一边开始大学生活。直到 2015 年,比特币杂志被 BTC Media 收购。 52 | 53 | ![](https://learnblockchain.cn/static/2019-10-26-23-14-2.png) 54 | 55 | 2013 年,比特币杂志在加利福尼亚州举办展览会,V 神的这次参会,让他体验到的,不仅仅是线上的活跃,还有线下有如此多的人对比特币、区块链、数字货币感兴趣。因此,他决定退学,世界这么大,去看看其他地方的数字加密公司和比特币社区。 56 | 57 | V 神说到做到,入学 8 个月后果断退学。开始满世界旅行,去过美国、西班牙、意大利、以色列等各地的数字加密公司和比特币社区,同时参与比特币 2.0 的改进。因为对比特币 2.0 的发展做出了巨大的贡献,2014 年,挤下了 Facebook 的创办者扎克伯格,获得了世界科技奖。但是,改进的过程中,V 神看到了比特币的局限性。 58 | 59 | ## 创造以太坊 60 | 61 | 旅行到以色列的时候,V 神遇到了两家数字加密公司,他们尝试发行代币,开发一个基于比特币的智能合约,可以运行金融合约。这激发了V 神进一步思考,开发一个智能合约平台,让用户可以方便快捷的创建自己的应用程序 DAPP。他向比特币社区提出了设想,基于比特币系统的应用平台,但是比特币所有的改进技术,都是围绕着支付和安全属性,V 神理所当然被拒绝了。 62 | 63 | ![](https://learnblockchain.cn/static/2019-10-26-23-14-46.png) 64 | 65 | 2013 年年底,V 神决定另起炉灶,他将自己的想法写成了白皮书发表出来,就是众所周知的 “Ethereum” 以太坊。刚开始,只把这份牛逼的白皮书寄给最亲密的朋友,然后由朋友慢慢散播出去,受到了众多比特币爱好者的关注。一些感兴趣的朋友和其他人加入进来,最后二十多人一起开始了以太坊的开发。 66 | 67 | 2014 年 1 月,V 神和该项目的其他成员一起公开发布了以太坊的部署计划,并解释了以太坊的运作原理。不久之后,V 神和团队成员迁移到瑞士的楚格(Zug),这个地方后来被称为数字货币的硅谷。他们在这里创建了非营利组织的以太坊基金会,专门负责以太坊的开发和管理。刚开始,V 神和团队没有钱来运营这个项目,他们甚至还在大门上贴纸条,上面写着”欢迎人们赞助一杯咖啡”。 68 | 69 | ![](https://learnblockchain.cn/static/2019-10-26-23-15-18.png) 70 | 71 | 2014 年 7 月 24 日,V 神开启了以太坊众筹募资,每 1 枚 BTC 可兑换 2000 枚 ETH,众筹 42 天一共募集到 31,529 个比特币,当时相当于 1850 万美元。也就有了开头那一幕,虽然在国外造成了轰动,一天之内就募集到 700 万枚 BTC,国内却忽视了 ETH。 72 | 73 | 74 | 2015 年,V 神和团队努力完成以太坊的创建,这不是一个容易的过程,他们开发了很多个版本,最后一个版本是叫“奥林匹克”,最接近我们现在熟知的“以太坊”。但是公开的测试版本到处是错误,为了鼓励更多人参与维护和更新,为此以太坊基金会发起了一个奖励计划,只要你发现了以太坊的错误,就可以获得奖励。 75 | 76 | ![](https://learnblockchain.cn/static/2019-10-26-23-15-49.png) 77 | 78 | 经过半年的测试,7 月 30 日,命名为“以太坊”的版本发布,仍然有不少错误,V神和团队一边测试一边修改。等到 2016 年 3 月 14 日,“以太坊”进行了大的更新,完整的雏形差不多出来了,可以让开发者们在以太坊平台上自由创建 DAPP、Token 和智能合约等。 79 | 80 | 81 | 82 | 2017 年 6 月 17 日,以太坊平台遭到黑客组织的攻击,他们利用代码漏洞,进行了双花攻击,让系统重复拨款,总共盗取了 370 万个 ETH,导致以太坊市值蒸发了 5 亿美元,让人质疑以太坊的资金安全问题,还引发了区块链的信任危机。为此,V 神打破了区块链的规则 —— 不能随便篡改的原则,更新以太坊。 83 | 84 | 85 | ![](https://learnblockchain.cn/static/2019-10-26-23-16-20.png) 86 | 87 | 88 | 89 | 90 | 这个举动引发了无数的争议,因为这是有违区块链初衷的,V 神决定了让大家自由选择,坚持区块链不容更改的人们,留下来维护和管理原来的以太坊,就是所谓的 ETC(Ethreum Classic)。V 神和认同自己的人,选择更新和修改以太坊的安全漏洞,就是现在的 ETH。 91 | 92 | 93 | 94 | 2017 年,围绕以太坊平台建立了一个联盟,旨在学习、研究和交流以太坊在各行各业的应用。这个联盟被称为“以太坊”联盟,拥有 500 多名成员,包括微软、万事达、英特尔等知名公司。 95 | 96 | 97 | ![](https://learnblockchain.cn/static/2019-10-26-23-16-29.png) 98 | 99 | 100 | 101 | 102 | 截止目前,因为以太坊平台极佳的通用性和可塑性,世界各地区块链的开发者和公司在上面创建了数以千计的 DAPP,让以太坊一跃成为了区块链 2.0 的代名词,也让 ETH 成为了全球第二大数字货币。 103 | 104 | 105 | ![](https://learnblockchain.cn/static/2019-10-26-23-16-38.png) 106 | 107 | 108 | 109 | 110 | 伴随着以太坊的发展,尽管 V 神不是唯一创造以太坊的人,但是他在这个项目中扮演了非常重要的角色。因此,V 神走上了神坛,成为了真正的 V 神。他无疑是个天才,无论是智商,还是他对数字加密货币的认知。和中本聪之于比特币一样,V 神也是以太坊的头号人物。不同的是,V 神没有匿名,而是四处奔走传播自己的思想和作品,去创造一个去中心化、平等、效率和信任的世界。 111 | 112 | 113 | ## 视频采访 V 神 114 | 115 | 116 | > 本文转自 mp.weixin.qq.com/s/ZtF_hxzp6BD2SJ1RStRLlw 。 -------------------------------------------------------------------------------- /content/basic/发行.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "发行" 3 | date: 2019-10-20T06:25:17+08:00 4 | weight: 1005 5 | menu: 6 | docs: 7 | name: "发行" 8 | parent: "basic" 9 | --- 10 | 11 | 以太坊中的[以太币]({{ref "以太币.md"}})是在矿工挖出新区块时而被生产,作为奖励发放给看矿工的。 12 | 13 | ## 以太币的货币属性 14 | 15 | 历史上,许许多多的物品曾经被当作货币流通——贝壳、金币、纸币等等。人们把它们当作货币是因为其高仿造难度、稀缺性以及它们曾被用作货币这一事实。在现代,黄金等商品并不被认为是货币,尽管它们非常有价值,人们并没有将它们视为是交换媒介。 16 | 17 | 货币的主要属性是一种社会契约。法币,即世界上大部分地区所用的货币形式,由特定国家政府保证其价值。政府法令规定某种特定货币(美元、澳元、日元)作为该国法定货币(应被接受的货币),以及最重要的,作为税收的支付方式。通常来说,政府控制货币供给并能按照其意愿增加货币数量。 18 | 19 | 法币本身非常微妙——一旦管理不当,它可能会对国家造成可怕的影响(如委内瑞拉发生的事件)。尽管某些政府具有强大的权力和影响力,仅仅将某种物品定为法币的法令是远远不够的——国民必须集体相信这一货币具有实际价值并且不会因强通货膨胀而失去效力。 20 | 21 | 如果一样物品要在经济社会中充当货币的角色,它需要具备交换媒介(MoE)、记账单位(UoA)和价值存储(SoV)三个职能。 22 | 23 | 以太币在以太坊经济中被许多 dAPP 作为交换媒介,dAPP 供应商接受用以太币换取同质的或非同质的代币或其它服务。它还被各方(包括通过代币融资筹集以太币的公司)用作记账单位。 24 | 25 | 最后,鉴于其相对稀缺性,供应量增长的可预测性和内生功能,以太币具有被用以价值存储的历史——投资者和投机者都购买以太币以满足他们的投资需求。 26 | 27 | 一种物品(无论是现实的还是虚拟的)通常必须具有五种特定属性才能成为可靠的货币: 28 | 29 | + 便携性; 30 | + 耐用性; 31 | + 可分割性; 32 | + 可互换性; 33 | + 悠久历史(林迪效应)。 34 | 35 | 以太币具有高便携性(因为它是虚拟的),耐用性(还是因为它是虚拟的)、可分性(最多可达小数点后 18 位)、受限的可互换性(因为 ETH 代币可以互相交换,但账户和地址容易被加入黑名单)。诸如 zk-SNAKEs 的隐私协议最终将改善以太坊的这一属性。 36 | 37 | 以太坊于 2015 年面世,并将继续在历史长河中书写有力的一笔。在 99.99% 的时间里,以太坊网络(以及 Ether)都如我们预期中那样运作良好。剩下 0.01% 包括遭遇 The DAO 事件、多次智能合约的大规模被黑、多次协议级攻击、 DoS 攻击、来自广泛的区块链社区的不间断负面评论以及多个熊市(包括最近价格下跌 94% 这一事件)。 38 | 39 | 除此之外,以太币还具有一些其它属性,如抗审查性、无门槛性、准匿名性以及可与其它区块链网络互操作的性质。 40 | 41 | + 以太坊的 24 小时平均流通量达到 20 亿美元; 42 | + 目前有超过一百八十万枚以太币被用于保护 MakerDAO 的 CDP; 43 | + 另外有至多 40000 枚以太币被锁定在各种金融应用中; 44 | + 以太坊网络平均每天处理 600000 笔交易; 45 | + 平均每日有 250000 个活跃地址; 46 | + Gas 使用量已经达到了上限(说明以太坊不仅仅被用于简单的转账交易); 47 | + 成千上万的公司通过以太坊进行代币融资并筹集了数十亿美元。 48 | 49 | 50 | ## 货币政策 51 | 52 | 以太坊没有固定的总供应量,遵循“最低必要发行政策”,在保证网络安全的前提下调整发行速率,争取以最低量发行以太币。 53 | 54 | 以太币资产的增发方案为各方所热议,目前有两种主要模式:限制供应(像BTC一样)或进行低的、可预测并难以改变的发行速率限定(像以太坊 2.0 计划的那样)。 55 | 56 | 在以太坊 2.0 中(将部署 Sharding 和权益证明),尽管低通货膨胀率将始终保证验证者为其保护网络的行为获得奖励,但它可能会使非验证者手中的以太币贬值。 57 | 58 | 不过,下列事项可能让部分 ETH 退出流通领域,进而对冲这种贬值效应:权益质押、开放式金融应用、手续费销毁以及私钥丢失。 59 | 60 | 61 | 以太币的年发行速率大概在 7% 左右。在 2019 年 1 月,以太坊进行了君士坦丁堡升级,从而将每个区块的奖励由 3 个以太币降低至 2 个以太币。这将使得整体年度增发速率降低至 4.5% 左右。 62 | 63 | 以太坊一直是在减少发行量,从未增加发行量。转向股权证明也是以太坊在不牺牲安全性的前提下将发行量减少到最低额的努力的一部分。 64 | 65 | 以太坊的最低必要发行政策是由生态系统中的众多利益相关者实施的,包括: 66 | 67 | + 开发者 68 | + 社区成员 69 | + 生态系统计划/项目 70 | + 矿工和其他网络参与者 71 | 72 | 由于以太坊是一个去中心化的网络,除非上述利益相关者达成共识,否则货币政策无法成功修改。以太坊遵循链下治理流程,这意味着有关网络变更的任何决定都将在协议之外发生。也就是说,除非网络的安全受到威胁,否则以太坊的发行量不可能再增加。 73 | 即将到来的以太坊2.0权益证明过渡将逐步允许在保持相同级别的网络安全性的同时大幅减少以太币的发行。 74 | 75 | ## 重要事件 76 | 77 | ### 创世块 78 | 79 | 作为以太坊创始区块的一部分,在创世块中为以太坊销售的最初贡献者分配了6千万枚以太币。另外的1200万以太币被拨给了以太坊发展基金,该基金分配给了早期的捐助者和以太坊基金会。 80 | 81 | ### 历史发行影响 82 | 83 | #### 减少区块奖励 84 | 85 | 在以太坊网络上挖出的每个区块都有相关的区块奖励,激励矿工支持该网络。除了基本区块奖励之外,每找到一个叔块,额外奖励 0.15625个以太币(5个ETH的1/32)。而且挖出叔块的矿工也能够获得一部分奖励。这导致随着时间的推移以太币的供应量不断增加。 86 | 87 | 历史区块奖励如下: 88 | 89 | + 0区块至4,369,999区块:5个以太币。 90 | + 4,370,000到7,280,000区块:3个以太币(通过EIP-649更改)。 91 | + 截止目前的7,280,000区块:2个以太(通过EIP-1234更改)。 92 | 93 | #### 其他事件 94 | 95 | 发行率也受区块出块速度影响。以太坊历史上还有一些其他事件影响了发行率。一部分是计划的,一部分是没有计划的。 96 | 97 | 1. 2016年3月的 Homestead 版中硬分叉降低了出块速度,因此发行率暂时上升。 98 | 2. 在2016年末,以太坊网络受到 DDoS 攻击。这增加了叔块的捕获率,因此导致发行率的暂时上升。 99 | 3. 2017年中,一种名为“难度炸弹”(或“以太坊冰河世纪”)的机制开始生效。这意味着开采新区块的难度增加,因此放慢了出块速度。这导致发行率急剧下降。 100 | 4. 2017年底,释放了拜占庭硬分叉版本,这延迟了难度炸弹的发动,并且还将区块奖励从5以太币降低至3以太币。 101 | 102 | 103 | ### ETH2.0的股权证明 104 | 105 | 根据当前的Eth 2.0规范,作为权益证明的一部分,以太币发行率将大大降低。 106 | 以太币权益总量和持有者年化收益率之间存在一个滑动比率。现有的以太坊 2.0 规范将根据网络总权益数目提供以下年通胀率和验证者年化收益率: 107 | 108 | | 网络总权益 | 验证者年化收益 | 年膨胀率| 109 | |----|----|----| 110 | | 1,000,000 | 8.02% | 0.08% | 111 | | 2,000,000 | 5.67% | 0.11% | 112 | | 3,000,000 | 4.63% | 0.13% | 113 | | 5,000,000 | 3.59% | 0.17% | 114 | | 10,000,000 | 2.54% | 0.24% | 115 | | 20,000,000 | 1.79% | 0.34% | 116 | | 30,000,000 | 1.46% | 0.42% | 117 | | 50,000,000 | 1.13% | 0.55% | 118 | | 100,000,000 | 0.80% | 0.77% | 119 | 120 | **值得注意的是**,以太币的增发率远低于验证者的年化收益。 121 | 122 | 2019 年 4 月 23 日,Vitalik 在 Eth2.0 协议规范的代码库中提议提高验证者的年化收益率(相应地自然也调整了以太币的增发率)。这一提案得到了众多支持,因此有可能得到施行或在以此为基础作进一步修改。 123 | 124 | | ETH validating | 最高年度发行额 | 年度最大发行率 | 验证者最高年收益率 | 125 | | :--- | :--- | :--- | :--- | 126 | | 1,000,000 | 181,019 | 0.17% | 18.10% | 127 | | 3,000,000 | 313,534 | 0.30% | 10.45% | 128 | | 10,000,000 | 572,433 | 0.54% | 5.72% | 129 | | 30,000,000 | 991,483 | 0.94% | 3.30% | 130 | | 100,000,000 | 1,810,193 | 1.71% | 1.81% | 131 | | 134,217,728 | 2,097,152 | 1.56% | 1.56% | 132 | 133 | ## 以太币发行量预测 134 | 135 | 在以太坊 2.0 的最初阶段,由于信标链与 Eth1.0 链并行运行,发行速率将略有回升(可能是从 4.5% 升到 5%)。 136 | 在第三个阶段,Eth1.0 链将被弃用,因此网络发行速率将大幅下降至计划目标,即1% 以下。 137 | ![](https://learnblockchain.cn/static/2019-10-27-16-37-37.png) 138 | 139 | **参考资料** 140 | 141 | 1. [ethhub](https://docs.ethhub.io/ethereum-basics/monetary-policy/) 142 | 2. [微信公众号文章](https://mp.weixin.qq.com/s?src=11×tamp=1572126540&ver=1937&signature=wKsQv4w1h3NuXYz2WMyMasVB7wzlZjqVLqQANL4cI8-hPR2EKjwxRXk6AmjbnJUW3ubb5T3qZ9snkLrRKivyK0odNIzjPCh6eVdPRXo556CaW2ts0-3clZYNoxJ8Xx15&new=1) -------------------------------------------------------------------------------- /content/basic/基金会.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "基金会" 3 | date: 2019-10-20T06:25:12+08:00 4 | weight: 1010 5 | menu: 6 | docs: 7 | name: "基金会" 8 | parent: "basic" 9 | --- 10 | 11 | 以太坊基金会是一个在瑞士注册的非盈利组织。它的目标是管理以太币销售带来的资金以更好支持以太坊和去中心化技术生态系统。 12 | 13 | 2014年7月在瑞士成立的以太坊基金会,其宗旨是促进新技术和应用形式的发展,特别是在新的开放的去中心化软件架构领域。 14 | 它的目标是使去中心化开放技术可以被开发、培养、升级和保持。一个居于首要地位,但不唯一的中心任务就是对以太坊协议及相关技术发展的推进,以及对使用以太坊技术和协议的应用的推进和支持。除此之外,以太坊基金会还以各种不同的形式支持和倡导一个去中心化的互联网。 15 | 16 | ## 人员与团队 17 | 18 | 根据 V 神在18年8月在[回答](https://www.reddit.com/r/ethereum/comments/95h4io/how_many_people_work_for_ethereum_foundation/e3sv72e) 以太坊基金会总共约有90个全职。 19 | 该组织是临时分布的组织,尝试尽可能减少组织的“内部”和“外部”之间的区别 20 | (这似乎是成功的;相反,以下职位之一的约瑟夫·潘不是基金会成员)。 这就是为什么基金会没有“团队”页面的部分原因。 21 | 22 | 有大约12个研究小组从事 Casper 和分片工作,并且该小组与Prysmatic Labs和类似小组紧密合作。 23 | 也有团队致力于下面工作: 24 | 25 | + Geth 客户端 26 | + Mist 27 | + WASM 28 | + Whisper/Swarm 29 | + Pyevm/Trinity/Vyper 30 | + Solidity 31 | + 开发者工具 32 | 33 | 也有非技术成员从事专业任务(例如,关于安全性的Martin Swende)。 34 | 35 | 最重要的是,有接受资助的人,这些人都发布在博客文章中。 如今,我们的赠款计划刻录率高于全职贡献者的刻录率。 36 | 37 | 更多关于基金会的信息请参考基金管理团队官方网站(https://ethereum.org/foundation )。 38 | -------------------------------------------------------------------------------- /content/basic/应用.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "应用" 3 | date: 2019-10-21T05:23:18+08:00 4 | weight: 1011 5 | menu: 6 | docs: 7 | name: "应用" 8 | parent: "basic" 9 | --- 10 | 11 | 因为区块链是去中心化的,因此在区块链上的的应用也称之为去中心化应用(DAPP)。 12 | 13 | ## 什么是DApp? 14 | 15 | APP全称Application,是应用的意思。许多人对于APP的理解是:能下载到移动端的应用。其实APP并非特指移动端的应用,只运行在浏览器上的网站也可以叫APP。 16 | 17 | DApp和App只相差一个D,D是decentralized,去中心化的意思。传统的APP依赖着中心化服务器,大量数据都储存在这里,所以APP项目方随时可以进行删改。DApp则部分或完全使用去中心化网络储存数据及代码。 18 | 19 | 20 | 现在关于DApp还没有一个严格的定义,仁者见仁,智者见智。大部分介绍DApp的文章通过描述DApp的特点来代替定义。它们基本都引用了GitHub上的这一段文字: 21 | 22 | > 应用必须完全开源、自治并且没有一个实体控制着该应用的大部分代币(Token)。该应用必须能够根据市场的反馈及技术要求进行升级,但是升级必须由应用的用户达成共识之后才可以进行; 23 | 应用的数据必须加密后存储在公开的区块链上; 24 | 应用必须拥有代币机制(可以使用已存在的代币或者新发行一种内置代币),矿工或者维护节点需要得到代币奖励; 25 | 代币的产生必须依据标准的加密算法,有价值的节点可以根据该算法获取应用的代币奖励。 26 | - https://github.com/DavidJohnstonCEO/DecentralizedApplications 27 | 28 | 29 | ## DApp的现状 30 | 31 | 目前绝大多数DApp无法完全满足上文中的4点,我们总结了以下几个DApp的现状: 32 | 33 | 1. 使用DApp的门槛较高,全球DApp使用人数只有几十万。DApp经常涉及加密货币交易,微信/支付宝并不能进行虚拟货币的交易,因此需要专门的钱包工具 (如下面会介绍的浏览器插件钱包)。 34 | 2. 许多DApp的代码并不开源,不开源的原因各异:有的是为了防止竞争对手抄袭;有的是为了暗地谋取利益。 35 | 3. 如手机APP有iOS版和Android版,DApp也可适配到多条区块链上运行。但大多数DApp只有网页版,不能下载。 36 | 4. 这个行业并未成熟,鲜有制作精良的DApp,各大公司已经纷纷入场投资开发DApp以及区块链,未来前景可期。 37 | 5. 目前以金融类和游戏类DApp居多,设计良好的DApp每日流水可达数千万。 38 | 39 | 初学者不必知根知底,只需了解上述的DApp特点和下面将要说明的DApp现状即可。 40 | 41 | ## 以太坊DApp 分类 42 | 43 | ![](https://learnblockchain.cn/static/2019-11-2-15-12-16.png) 44 | 45 | > 注:数据统计更新于 2019年11月02日,来源 https://analytics.dapp.review/ 46 | 47 | ## 以太坊DApp排行 48 | 49 | > 注:数据统计更新于 2019年11月02日,来源 https://analytics.dapp.review/ 50 | 51 | | # | DApp | 类别 | 日活用户 | 日交易额 | 52 | | :--- | :----------------------------------------------------------- | :----: | :------: | ------------: | 53 | | 1 | [Compound](https://dapp.review/dapp/1221) | 金融 | 281 | $1,424,706.42 | 54 | | 2 | [MakerDAO](https://dapp.review/dapp/10707) | 金融 | 298 | $569,989.45 | 55 | | 3 | [X2BET.WIN](https://dapp.review/dapp/11851) | 抽奖 | 750 | $541,018.05 | 56 | | 4 | [dice2.win](https://dapp.review/dapp/875) | 抽奖 | 71 | $455,430.52 | 57 | | 5 | [imToken Tokenlon](https://dapp.review/dapp/11533) | 交易类 | 113 | $435,874.29 | 58 | | 6 | [Uniswap](https://dapp.review/dapp/10074) | 交易类 | 191 | $295,891.07 | 59 | | 7 | [dYdX](https://dapp.review/dapp/11717) | 金融 | 124 | $261,290.19 | 60 | | 8 | [SingularX](https://dapp.review/dapp/1245) | 交易类 | 71 | $253,750.54 | 61 | | 9 | [Kyber](https://dapp.review/dapp/266) | 交易类 | 258 | $144,390.67 | 62 | | 10 | [IDEX](https://dapp.review/dapp/165) | 交易类 | 292 | $109,112.57 | -------------------------------------------------------------------------------- /content/basic/挖矿.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "挖矿" 3 | date: 2019-10-21T05:29:59+08:00 4 | weight: 1009 5 | menu: 6 | docs: 7 | name: "挖矿" 8 | parent: "basic" 9 | --- 10 | 11 | 挖矿这个词源于对加密货币与黄金的类比。黄金或贵金属很稀有,电子代币也是,增加总量的唯一方法就是挖矿。以太坊也是这样,发行的唯一办法就是挖矿。但是不像其他例子,挖矿也是通过在区块链中创建、验证、发行和传播区块来保护网络的方法。 12 | 13 | 挖以太币=保护网络=验证计算。 14 | 15 | 以太坊,和所有区块链技术一样,使用激励驱动的安全模式。共识基于选择具有最高总难度的区块。矿工创造区块,其他人检测有效性。区块只有在包含特定难度的工作量时才有效,还有其他合格性条件。请注意到以太坊Serenity里程碑,可能就会被取代(参考权益证明模型)。 16 | 17 | 以太坊区块链在很多方面与比特币区块链类似,但也有些不同。在区块链架构方面,以太坊和比特币之间最主要的的区别是,不像比特币,以太坊区块不仅包含交易列表也包含最近状态(merkle patricia特里结构的根散表编码在状态中更精确)除此之外,另外两个值,区块数和难度,也储存在区块中。 18 | 19 | 使用的工作量证明算法叫Ethash(Dagger-Hashimoto算法的改良版本),包括找到算法的随机数输入以使结果低于特定的难度阈值。工作量证明算法的意义在于,要找到这样一个随机数,没有比列举可能性更好的策略,而解决方法的验证琐碎又廉价。由于输出有均匀分布(是散表功能应用的结果),我们可以保证,平均而言,需要找到这样一个随机数的时间取决于难度阈值。这使得只通过操纵难度来控制找到新区块的时间成为可能。 20 | 21 | 正如协议中所描述的,难度动态调整的方式是每15秒整个网络会产生一个区块。我们说网络用15秒区块时间生产一个区块链。这个"心跳"基本上主要强调系统状态同步,保证不可能维持一个分叉(允许double spend)或被恶意分子重写历史,除非攻击者有半数以上的网络挖矿能力(即所谓的51%攻击)。 22 | 23 | 任何参与到网络的节点都可能是矿工,预期的挖矿收益和他们的(相对)挖矿能力或者说成正比,比如被网络总散表率标准化的,每秒尝试的随机数数量。 24 | 25 | Ethash工作量证明是内存难解的,这使它能抵抗ASIC。内存难解性由工作量证明算法实现,需要选择依靠随机数和区块标题的固定资源的子集合。这个资源(几十亿字节大小的数据)叫做DAG。每3000个区块的DAG完全不同,125小时的窗口叫做epoch(大约5.2天),需要一点时间来生成。由于DAG只由区块高度决定,它可以被事先生成,如果没有被事先生成,客户端需要等到进程最后来生产区块。如果客户端没有预生成并提前缓存DAG,网络可能会在每个epoch过渡经历大规模区块延迟。注意不必要生成DAG以验证工作量证明,它可以在低CPU和小内存的状态下被验证。 26 | 27 | 在特殊情况下,从零开始创建节点的时候,只有在为现存epoch创建DAG的时候才会开始挖矿。 28 | 29 | > 文章来源: wangxiaoming.com/blog/2016/07/11/e18/ -------------------------------------------------------------------------------- /content/basic/术语.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "术语" 3 | date: 2019-10-21T05:42:01+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "术语" 8 | parent: "architecture" 9 | --- 10 | 11 | 12 | {{}} 13 | 马上就会编辑 14 | {{}} -------------------------------------------------------------------------------- /content/basic/浏览器.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "浏览器" 3 | date: 2019-10-21T05:30:25+08:00 4 | weight: 1007 5 | menu: 6 | docs: 7 | name: "浏览器" 8 | parent: "basic" 9 | --- 10 | 11 | ## 简介 12 | 13 | 区块链浏览器是浏览区块链信息的主要窗口,每一个区块所记载的内容都可以从区块链浏览器上进行查阅。通常数字资产用户会使用区块链浏览器查询记录在区块中的交易信息。 14 | 15 | 每一条区块链都有自己的区块链浏览器,用户不能通过区块链浏览器进行跨链查询。例如比特币区块链的浏览器只能查询比特币区块,以太坊只能查询以太坊,而并不能通过比特币区块链浏览器查询以太坊的区块。 16 | 17 | 有些网站为了方便用户查询多条区块链上的内容,会将多条链的区块链浏览器集中在一个网站上,方便用户在多个区块浏览器中自由切换。需要注意的是,能自由切换区块浏览器,并不代表可以将数字资产进行跨链交易。区块链浏览器仅提供区块查询功能。 18 | 19 | 不同的区块浏览器展示的内容也不同,通常用户可以查询到区块中包含的交易信息,以及区块的高度、哈希值、发布时间和开采的矿工等等。部分区块链浏览器还会显示全网算力、算力难度以及其他的一些参考内容。 20 | 21 | 区块链浏览器可以从各个区块链的官方网站上找到入口,或通过百度搜索找到。 22 | 23 | 24 | 25 | ## 以太坊区块链浏览器 26 | 27 | 1. 【推荐】**Etherscan** [https://etherscan.io](https://etherscan.io/) 28 | 2. **EtherChain** [https://www.etherchain.org](https://www.etherchain.org/) 29 | 3. **BTC.com 比特大陆** [https://eth.btc.com](https://eth.btc.com/) 30 | 4. **BlockChair** https://blockchair.com/ethereum 31 | 5. **TokenView** https://eth.tokenview.com/cn/ -------------------------------------------------------------------------------- /content/basic/钱包.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "钱包" 3 | date: 2019-10-21T05:30:19+08:00 4 | draft: true 5 | weight: 1007 6 | menu: 7 | docs: 8 | name: "钱包" 9 | parent: "basic" 10 | --- 11 | 12 | 13 | {{}} 14 | 马上就会编辑 15 | {{}} -------------------------------------------------------------------------------- /content/dev/IDE.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "以太坊开发IDE与编辑器" 3 | date: 2019-11-07T22:27:19+08:00 4 | weight: 5004 5 | menu: 6 | docs: 7 | name: "开发IDE" 8 | parent: "dev" 9 | identifier: "" 10 | --- 11 | 12 | - 常用: 13 | 14 | - [Remix](https://remix.ethereum.org/) 15 | 16 | 基于浏览器的 IDE,集成了编译器和 Solidity 运行时环境,不需要服务端组件。 17 | 18 | - [EthFiddle](https://ethfiddle.com/) 19 | 20 | 基于浏览器的 IDE,可以编写和分享Solidity 代码,需要服务端。 21 | 22 | - [Solhint](https://github.com/protofire/solhint) 23 | 24 | 一种静态检查器,提供安全和风格指南以及智能合约验证的最佳实践规则。 25 | 26 | - [Solidity IDE](https://github.com/System-Glitch/Solidity-IDE) 27 | 28 | 基于浏览器的 IDE,集成了编译器,支持 Ganache 和本地文件系统。 29 | 30 | - [Solium](https://github.com/duaraghav8/Solium/) 31 | 32 | 一种静态检查器,识别和修复 Solidity 中的风格以及安全问题。 33 | 34 | - [Superblocks Lab](https://lab.superblocks.com/) 35 | 36 | 基于浏览器的 IDE, 集成了基于浏览器的虚拟机以及 Metamask ,可以一键部署到主网和测试网。 37 | 38 | - [Ethereum Studio](https://studio.ethereum.org/): 39 | 40 | 以太坊基金会正式推出基于网页的集成开发环境(IDE) Ethereum Studio。Ethereum Studio 的目标是让开发人员在几分钟之内就可以基于以太坊进行开发,尽可能减少开发中的阻力,用户可以通过Ethereum Studio进行这些工作:在浏览器中开发和测试智能合约、将智能合约连接至前端网页应用、通过三个模版教程引导他们的应用、一键分享项目。 41 | 42 | - Visual Studio Code: 43 | 44 | - [Visual Studio Code extension](http://juan.blanco.ws/solidity-contracts-in-visual-studio-code/) 45 | 46 | Microsoft Visual Studio Code 插件,包含语法高亮和 Solidity 编译器。 47 | 48 | - Atom: 49 | 50 | - [Etheratom](https://github.com/0mkara/etheratom) 51 | 52 | Atom 编辑器的插件,支持高亮、编译和运行时环境(兼容后端节点和虚拟机)。 53 | 54 | - [Atom Solidity Linter](https://atom.io/packages/linter-solidity) 55 | 56 | Atom 编辑器的插件,提供 Solidity 语言的 Lint 检查(静态检查)。 57 | 58 | - [Atom Solium Linter](https://atom.io/packages/linter-solium) 59 | 60 | Atom 的可配置的 Solidty 静态检查器,基于 Solium。 61 | 62 | - Eclipse: 63 | 64 | - [YAKINDU Solidity Tools](https://yakindu.github.io/solidity-ide/) 65 | 66 | 基于Eclipse的 IDE. 具有根据上下文代码补全和帮助,代码导航,语法高亮,内置编译器,快速修复和模板功能。 67 | 68 | - Emacs: 69 | 70 | - [Emacs Solidity](https://github.com/ethereum/emacs-solidity/) 71 | 72 | Emacs 编辑器的插件,提供语法高亮和编译错误报告。 73 | 74 | - IntelliJ: 75 | 76 | - [IntelliJ IDEA plugin](https://plugins.jetbrains.com/plugin/9475-intellij-solidity) 77 | 78 | IntelliJ IDEA 的 Solidity 插件(可用于其他所有的 JetBrains IDE) 79 | 80 | - Sublime: 81 | 82 | - [Package for SublimeText - Solidity language syntax](https://packagecontrol.io/packages/Ethereum/) 83 | 84 | SublimeText 编辑器的语法高亮包。 85 | 86 | - Vim: 87 | 88 | - [Vim Solidity](https://github.com/tomlion/vim-solidity/) 89 | 90 | Vim 编辑器的插件,提供语法高亮。 91 | 92 | - [Vim Syntastic](https://github.com/scrooloose/syntastic) 93 | 94 | Vim 编辑器的插件,提供编译检查。 95 | -------------------------------------------------------------------------------- /content/dev/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "写给以太坊新手开发者" 3 | date: 2019-11-09T10:51:54+08:00 4 | weight: 5000 5 | --- 6 | 7 | 欢迎你,以太坊开发者!这里,我为你准备了一份以太坊开发指引,希望能帮助你快速入手以太坊开发。 -------------------------------------------------------------------------------- /content/dev/企业区块链.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "以太坊企业开发工具" 3 | date: 2019-10-21T06:43:23+08:00 4 | weight: 5010 5 | menu: 6 | docs: 7 | name: "企业开发" 8 | parent: "dev" 9 | identifier: "" 10 | --- 11 | 12 | 13 | 14 | + [Ethereum on Azure](https://docs.microsoft.com/en-us/azure/blockchain-workbench/ethereum-poa-deployment) - 联盟以太坊PoA网络的部署、治理。 15 | + [Kaleido](https://kaleido.io/) - 用于搭建一个联盟区块链,对概念验证和测试非常有帮助。 -------------------------------------------------------------------------------- /content/dev/安全分析.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "安全分析" 3 | date: 2019-10-21T06:42:40+08:00 4 | weight: 5011 5 | menu: 6 | docs: 7 | name: "安全分析" 8 | parent: "dev" 9 | identifier: "" 10 | --- 11 | 12 | ## 安全工具 13 | 14 | - [MythX](https://mythx.io/) - 面向以太坊开发者的安全验证平台和工具生态 15 | - [Mythril Classic](https://github.com/ConsenSys/mythril-classic) - 开源的EVM字节码安全分析工具 16 | - [Oyente](https://github.com/melonproject/oyente) - 另一个智能合约安全静态分析工具 17 | - [Securify](https://securify.chainsecurity.com/) - 以太坊智能合约安全扫描器 18 | - [SmartCheck](https://tool.smartdec.net/) - 静态智能合约安全分析器 19 | - [Porosity](https://github.com/comaeio/porosity) - 以太坊智能合约反编译和安全分析工具 20 | - [Ethersplay](https://github.com/trailofbits/ethersplay) - EVM 反汇编工具 21 | - [Evmdis](https://github.com/Arachnid/evmdis) - 另一个EVM反汇编工具 22 | - [Hydra](https://github.com/IC3Hydra/Hydra) - 去中心化安全研究框架 23 | - [Solgraph](https://github.com/raineorshine/solgraph) - 可视化Solidity控制流,用于智能合约安全分析 24 | - [Manticore](https://github.com/trailofbits/manticore) - 智能合约的符号化执行工具 25 | - [Slither](https://github.com/trailofbits/slither) - Solidity静态分析框架 26 | - [Adelaide](https://github.com/sec-bit/adelaide) - Solidity编译器的SECBIT静态分析扩展 27 | - [solc-verify](https://github.com/SRI-CSL/solidity/) - Solidity智能合约的模块化验证器 28 | - [Solidity security blog](https://github.com/sigp/solidity-security-blog) - 已知攻击及常见反模式的全面清单 29 | - [Awesome Buggy ERC20 Tokens](https://github.com/sec-bit/awesome-buggy-erc20-tokens) - ERC20智能合约漏洞集 30 | - [Free Smart Contract Security Audit](https://callisto.network/smart-contract-audit/) - 来自Callisto网络的免费的智能合约安全审计 31 | 32 | ## 监视 33 | 34 | - [amberdata.io](https://amberdata.io/) - 提供实时监视、异常检测、代币指标、智能合约审计等,图形化可视,支持区块链搜索 35 | - [Neufund - Smart Contract Watch](https://github.com/Neufund/smart-contract-watch) - 智能合约和交易监视工具 36 | - [Scout](https://scout.cool/) - 将以太坊智能能合约的活动和事件日志转化为实时数据流 37 | - [Tenderly](https://tenderly.dev/) - 以仪表盘形式提供可靠的智能合约监视和审计,无需用户自建主机 38 | - [Chainlyt](https://www.chainlyt.io/main/dashboard/contract) - 探索智能合约的而使用情况,跟踪特定合约函数的调用 39 | - [BlockScout](https://github.com/poanetwork/blockscout) - 审查分析EVM类区块链的工具。以太坊网络的唯一完整功能的区块链浏览器 40 | -------------------------------------------------------------------------------- /content/dev/客户端.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "以太坊客户端" 3 | date: 2019-10-21T06:41:06+08:00 4 | weight: 5003 5 | menu: 6 | docs: 7 | name: "客户端" 8 | parent: "dev" 9 | identifier: "" 10 | --- 11 | 12 | 在以太坊早期的工程中,已经在多种不同的操作系统上实现了多个不同的客户端,这对整个以太坊的生态系统来说是巨大的胜利。它让我们验证了协议的明确性(在以太坊 [黄皮书](https://github.com/ethereum/yellowpaper) 中指明),向新的革新敞开大门,也让我们都保持诚实。然而,这也让很多新用户倍感困扰,因为自始至终也没有一个“以太坊安装包”让他们直接使用。 13 | 14 | 截止 2019年11月02日,最受欢迎的两个客户端分别是: [Go客户端(go-ethereum)](http://ethdoc.cn/ethereum-clients/go-ethereum/index.html#go-ethereum) 和 [Rust客户端(Parity)](http://ethdoc.cn/ethereum-clients/parity/index.html#parity)。 15 | 16 | | 客户端 | 语言 | 开发者 | | 17 | | ------------------------------------------------------------ | ---------- | ------------------------------------------------------ | ---- | 18 | | [Go客户端(go-ethereum)](http://ethdoc.cn/ethereum-clients/go-ethereum/index.html#go-ethereum) | Go | [Ethereum Foundation](https://ethereum.org/foundation) | | 19 | | [Rust客户端(Parity)](http://ethdoc.cn/ethereum-clients/parity/index.html#parity) | Rust | [Ethcore](https://ethcore.io/) | | 20 | | [C++客户端(cpp-ethereum)](http://ethdoc.cn/ethereum-clients/cpp-ethereum/index.html#cpp-ethereum) | C++ | [Ethereum Foundation](https://ethereum.org/foundation) | | 21 | | [python客户端(pyethapp)](http://ethdoc.cn/ethereum-clients/pyethapp/index.html#pyethapp) | Python | [Ethereum Foundation](https://ethereum.org/foundation) | | 22 | | [JavaScript库(ethereumjs-lib)](http://ethdoc.cn/ethereum-clients/ethereumjs-lib/index.html#ethereumjs-lib) | Javascript | [Ethereum Foundation](https://ethereum.org/foundation) | | 23 | | [Java客户端(Ethereum(J))](http://ethdoc.cn/ethereum-clients/ethereumj/index.html#ethereum-j) | Java | [ether.camp](http://www.ether.camp/) | | 24 | | [Ruby客户端(ruby-ethereum)](http://ethdoc.cn/ethereum-clients/ruby-ethereum/index.html#ruby-ethereum) | Ruby | [Jan Xie](https://github.com/janx/) | | 25 | | [Haskell工具(ethereumH)](http://ethdoc.cn/ethereum-clients/ethereumh/index.html#ethereumh) | Haskell | [BlockApps](http://www.blockapps.net/) | | 26 | 27 | # 与客户端交互 28 | 29 | 为了实现和以太坊客户端等交互,请参考章节 [链接到以太坊客户端](http://ethdoc.cn/connecting-to-clients/index.html#connecting-to-clients) 。 30 | 31 | - [Pantheon](https://docs.pantheon.pegasys.tech/en/latest/) - PegaSys开发的Java客户端 32 | - [Geth](https://github.com/ethereum/go-ethereum/wiki/geth) - Go客户端 33 | - [Parity](https://www.parity.io/) - Rust客户端 34 | - [Aleth](https://github.com/ethereum/aleth) - C++ 客户端 35 | - [Nethermind](https://github.com/NethermindEth/nethermind) - .NET Core 客户端 36 | - [Pyethapp](https://github.com/ethereum/pyethapp) - Python 客户端,基于 [pyethereum](https://github.com/ethereum/pyethereum) 37 | - [Infura](https://infura.io/) - 提供以太坊客户端兼容API的云端服务 38 | - [Trinity](https://github.com/ethereum/trinity) - Python客户端,基于[py-evm](https://github.com/ethereum/py-evm) 39 | - [Ethereumjs](https://github.com/ethereumjs/ethereumjs-client) - JS客户端,基于[ethereumjs-vm](https://github.com/ethereumjs/ethereumjs-vm) 40 | - [Ethereumj](https://github.com/ethereum/ethereumj) - 以太坊基金会提供的Java 客户端 41 | - [Harmony](https://github.com/ether-camp/ethereum-harmony) - EtherCamp提供的Java客户端 42 | - [Seth](https://github.com/dapphub/dapptools/tree/master/src/seth) - 命令行的MetaMask 43 | - [Mustekala](https://github.com/musteka-la/mustekala) - Metamask的以太坊轻客户端 44 | - [Exthereum](https://github.com/exthereum/blockchain) - Elixir客户端 45 | - [EWF Parity](https://github.com/energywebfoundation/energyweb-ui) - Energy Web基金会提供的客户端,用于Tobalaba测试链 46 | - [Quorum](https://github.com/jpmorganchase/quorum) - 一个许可制的以太坊实现,支持数据隐私,开发者[JP Morgan](https://www.jpmorgan.com/quorum) 47 | - [Mana](https://github.com/mana-ethereum/mana) - Elixir实现的以太坊全节点 48 | 49 | -------------------------------------------------------------------------------- /content/dev/开发书籍.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "以太坊开发书籍" 3 | date: 2019-10-21T06:44:12+08:00 4 | weight: 5012 5 | menu: 6 | docs: 7 | name: "开发书籍" 8 | parent: "dev" 9 | identifier: "" 10 | --- 11 | 12 | 关于以太坊的中文图书并不多,本文整理的是国内外的关于以太坊的图书。既有电子图书也有出版图书。 13 | 14 | - [理想-以太坊的区块链创世录](https://book.douban.com/subject/34448906/) 15 | - [区块链技术指南](http://book.8btc.com/books/6/blockchain_guide/_book/) 16 | - [精通智能合约开发](http://edu.upchain.pro/book.html) 17 | - [以太坊技术详解与实战](https://book.douban.com/subject/30199891/) 18 | - [以太坊官网文档中文版](https://www.8btc.com/book/281944) 19 | - [Mastering Ethereum](https://github.com/ethereumbook/ethereumbook) 精通以太坊开发Oreilly开源书 20 | - [Mastering Ethereum中文版](https://img.learnblockchain.cn/pdf/mastering-ethereum.pdf) 精通以太坊开发中文翻译版(来自AMT社区) 21 | - [Introduction to Ethereum and Solidity](https://the-eye.eu/public/Books/qt.vidyagam.es/library/humble-bitcoin-bundle/Introducing Ethereum and Solidity_ Foud Blockchain Programming for Beginners/Introducing Ethereum and Solidity_ Foundatiin Programming for Beginners - Chris Dannen.pdf) - Learn Solidity development from concept to deployment. 22 | - [Ethereum: Blockchains, Digital Assets, Smart Contracts, Decentralized Autonomous Organizations](https://www.goodreads.com/book/show/32762240-ethereum) - Learn about Ethereum (and blockchains) from an IBM blockchain liason. 23 | 24 | -------------------------------------------------------------------------------- /content/dev/开发框架.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "开发框架" 3 | date: 2019-11-08T10:50:35+08:00 4 | weight: 5005 5 | menu: 6 | docs: 7 | name: "开发框架" 8 | parent: "dev" 9 | identifier: "" 10 | --- 11 | 12 | 以太坊生态中存在一些工具能够提升我们的开发效率。本文整理的是以太坊开发框架,不管是新手还是老师傅多尝试下不同开发工具所带来的惊喜! 13 | 14 | 15 | 16 | ## 框架与工具 17 | 18 | + [Truffle](https://www.trufflesuite.com) 19 | 20 | Truffle是以太坊的框架,为构建基于以太坊的应用程序提供开发环境。它包括对库的支持,该库提供用于编码新合同的自定义部署并链接以太坊应用程序,它提供了快速创建、编译、部署和测试区块链应用的构建模块。。它提供了使用Chai和Mocha执行自动合同测试的能力。 21 | + [Truffle 中文文档](https://learnblockchain.cn/docs/truffle/) 22 | + [用以太坊开发框架Truffle开发智能合约实践攻略(代码详解)](https://mp.weixin.qq.com/s/QF6NYqlKAKDJnZHsA0UNlw) 23 | + [第四课 以太坊开发框架Truffle从入门到实战](https://www.jianshu.com/p/2e2b3b12eb0e) 24 | + [Truffle 教程:教你开发、部署第一个去中心化应用 (Dapp) - 宠物商店](https://learnblockchain.cn/2018/01/12/first-dapp/) 25 | 26 | 27 | + [Embark](https://embark.status.im) 28 | 29 | Embark是基于以太坊的DApps的开发框架。它允许开发人员基于分散技术开发和部署DApps。它使你能够创建智能合约,可以在JavaScript代码中使用。如果应用程序有多个合约,它还可以管理智能合约迁移。通过使用JS支持智能合约的测试驱动开发,开发人员可以在不同的区块链(如testnet、live network和private net)上处理合约。 30 | + [Embark初探:一款强大的DApp开发框架](https://learnblockchain.cn/article/566) 31 | + [区块链DApp开发环境 embark 初探](https://www.jianshu.com/p/62151bede6be) 32 | 33 | > 中文资料太少,看官网英文资料把😆。 34 | 35 | + [Dapp](https://dapp.tools/dapp/) 36 | 37 | 用命令行来对以太坊合约进行构建,测试,部署和交易。 38 | 39 | + [Brownie](https://github.com/iamdefinitelyahuman/brownie) 40 | 41 | 以太坊智能合约测试,调试,交互和部署的Python框架。 42 | 43 | + [Etherlime](https://github.com/LimeChain/etherlime) 44 | 45 | 基于 ethers.js 的以太坊DAPP 开发框架。 46 | 47 | + [Testchains](https://github.com/Nethereum/TestChains) - 用于快速响应的预配置 .NET 开发链 48 | 49 | + [aragonCLI](https://hack.aragon.org/docs/cli-usage.html) - 用于创建和开发Aragon应用及组织 50 | 51 | 52 | 53 | #### UI组件 54 | 55 | - [aragonUI](https://ui.aragon.org/) - 包含DAPP组件的React开发库 56 | - [components.bounties.network](https://components.bounties.network/) - 包含DApp组件的React开发库 57 | - [lorikeet.design](https://lorikeet.design/) - 包含DApp组件的React开发库 58 | - [ui.decentraland.org](https://github.com/decentraland/ui) - 包含DApp组件的React开发库 59 | - [dapparatus](https://github.com/austintgriffith/dapparatus) - 可复用的react dapp组件 60 | - [Metamask ui](https://github.com/MetaMask/metamask-extension/tree/develop/ui/app/components) - Metamask React 组件 61 | - [DappHybrid](https://github.com/Nethereum/Nethereum.DappHybrid) - 跨平台混合式托管机制,用于基于web的去中心化应用 62 | - [Nethereum.UI.Desktop](https://github.com/Nethereum/Nethereum.UI.Desktop) - 跨平台桌面钱包示例 63 | - [eth-button](https://eth-button.github.io/eth-button/) - 最简的捐赠按钮 64 | - [Rimble Design System](https://rimble.consensys.design/) - 去中心化应用的自适应组件和设计规范 -------------------------------------------------------------------------------- /content/dev/开发测试网络.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "以太坊各种网络环境" 3 | date: 2019-10-21T06:43:10+08:00 4 | weight: 5001 5 | menu: 6 | docs: 7 | name: "网络环境" 8 | parent: "dev" 9 | identifier: "" 10 | --- 11 | 12 | 和传统产品环境一样,以太坊作为去中心化的产品也存在多个环境。以太坊曾发生过一次硬分叉,经历过无数次版本迭代。当每次变更时都伴随着不同开发测试环境出现。不同的网络环境使用不同的 ChainID和 网络 ID 区分。 13 | 14 | 当前以太坊生态中不同网络环境下的链网络信息: 15 | 16 | |Chain ID|名称|简称|链|网络|网络 ID| 17 | |--- |--- |--- |--- |--- |--- | 18 | |1|Ethereum Mainnet|eth|ETH|mainnet|1| 19 | |2|Expanse Network|exp|EXP|mainnet|1| 20 | |3|Ethereum Testnet Ropsten|rop|ETH|ropsten|3| 21 | |4|Ethereum Testnet Rinkeby|rin|ETH|rinkeby|4| 22 | |5|Ethereum Testnet Görli|gor|ETH|goerli|5| 23 | |6|Ethereum Classic Testnet Kotti|kot|ETC|kotti|6| 24 | |8|Ubiq Network Mainnet|ubq|UBQ|mainnet|1| 25 | |9|Ubiq Network Testnet|tubq|UBQ|mainnet|2| 26 | |28|Ethereum Social|etsc|ETSC|mainnet|1| 27 | |30|RSK Mainnet|rsk|RSK|mainnet|775| 28 | |31|RSK Testnet|trsk|RSK|testnet|8052| 29 | |42|Ethereum Testnet Kovan|kov|ETH|kovan|42| 30 | |60|GoChain|go|GO|mainnet|60| 31 | |61|Ethereum Classic Mainnet|etc|ETC|mainnet|1| 32 | |62|Ethereum Classic Testnet|tetc|ETC|testnet|2| 33 | |64|Ellaism|ella|ELLA|mainnet|1| 34 | |76|Mix|mix|MIX|mainnet|1| 35 | |77|POA Network Sokol|poa|POA|sokol|1| 36 | |88|TomoChain|tomo|TOMO|mainnet|88| 37 | |99|POA Network Core|skl|POA|core|2| 38 | |100|xDAI Chain|xdai|XDAI|mainnet|1| 39 | |101|Webchain|web|WEB|mainnet|37129| 40 | |101|EtherInc|eti|ETI|mainnet|1| 41 | |820|Callisto Mainnet|clo|CLO|mainnet|1| 42 | |821|Callisto Testnet|tclo|CLO|testnet|2| 43 | |1620|Atheios|ath|ATH|mainnet|11235813| 44 | |1856|Teslafunds|tsf|TSF|mainnet|1| 45 | |1987|EtherGem|egem|EGEM|mainnet|1987| 46 | |2018|EOS Classic|eosc|EOSC|mainnet|1| 47 | |24484|Webchain (after block xxxxxxx)|web|WEB|mainnet|37129| 48 | |31102|Ethersocial Network|esn|ESN|mainnet|1| 49 | |200625|Akaroma|aka|AKA|mainnet|200625| 50 | |246529|ARTIS sigma1|ats|ARTIS|sigma1|246529| 51 | |246785|ARTIS tau1|ats|ARTIS|tau1|246785| 52 | |1313114|Ether-1|etho|ETHO|mainnet|1313114| 53 | |7762959|Musicoin|music|MUSIC|mainnet|7762959| 54 | |18289463|IOLite|ilt|ILT|mainnet|18289463| 55 | |3125659152|Pirl|pirl|PIRL|mainnet|3125659152| 56 | |385|Lisinski|lisinski|CRO|mainnet|385| 57 | |108|ThunderCore Mainnet|TT|TT|mainnet|108| 58 | |18|ThunderCore Testnet|TST|TST|testnet|18| 59 | |11|Metadium Mainnet|meta|META|mainnet|11| 60 | |12|Metadium Testnet|kal|META|testnet|12| 61 | |13371337|PepChain Churchill|tpep|PEP|testnet|13371337| 62 | 63 | 64 | 65 | ## 环境说明 66 | 67 | 68 | 69 | - Olympic测试网络 - 早期的一个(预发布版本)测试网络,已不再使用 70 | - Morden测试网络 - 以太坊第一个测试网络,已不再使用 71 | - Ropsten测试网络 - 使用Pow,和当前的公有链环境一致,2016/11发布。 72 | - Kovan测试网络 - 仅parity钱包支持,使用PoA共识 73 | - Rinkeby测试网络 - 仅geth钱包支持,使用PoA共识 不同网络的特点可进一步查看这个[问答](https://ethereum.stackexchange.com/questions/27048/comparison-of-the-different-testnets) 74 | 75 | -------------------------------------------------------------------------------- /content/dev/开发环境.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "搭建以太坊开发测试环境" 3 | date: 2019-10-21T06:41:22+08:00 4 | weight: 5002 5 | menu: 6 | docs: 7 | name: "开发环境" 8 | parent: "dev" 9 | identifier: "" 10 | --- 11 | 12 | 搭建以太坊开发环境有多种方式,主要是将[以太坊智能合约开发IDE]({{}}) 13 | 和[以太坊客户端]({{}})安装在开发机上。 14 | 根据不同的操作系统,罗列了些有实际可操作意义的指导手册文档。 15 | 16 | ## Windows 17 | 18 | + [以太坊开发环境搭建及测试](https://mp.weixin.qq.com/s/rNGYlav8QhBwmlQCaDZ8VQ) 19 | + [以太坊智能合约-环境搭建与配置](https://mp.weixin.qq.com/s/GT8hVUFUQwUnyvTbw0fpfw) 20 | 21 | ## Mac 22 | 23 | + [区块链100讲:以太坊开发环境部署(附代码)](https://mp.weixin.qq.com/s/6W0_NMcZoq7h5cM89sd4tA) 24 | 25 | ## Ubuntu 26 | 27 | + [以太坊智能合约开发环境搭建(Ubuntu 14.04)](https://tsaiyee.com/blog/2017/11/26/ethereum-smart-contract-develop-env-ubuntu/) 28 | 29 | ## 浏览器 30 | 31 | + [智能合约开发环境搭建及Hello World合约](https://mp.weixin.qq.com/s/Kpw485FtoaKID6mTwhP6mg) 32 | + [搭建智能合约开发环境Remix IDE 及使用](https://learnblockchain.cn/2018/06/07/remix-ide/) 33 | 34 | 35 | 36 | ## 部署开发测试链 37 | 38 | 当你自己在本地搭建以太坊节点环境时,下面内容可供你创建一条开发测试链。 39 | 40 | - [ethnode](https://github.com/vrde/ethnode) - 运行一个开发用的以太坊节点(Geth或Parity),简单到只需要执行`npm i -g ethnode && ethnode`. 41 | - [Ganache](https://github.com/trufflesuite/ganache) - 用于开发和测试的以太坊区块链仿真器,带有图形化界面和日志。 42 | - [Kaleido](https://kaleido.io/) - 用于搭建一个联盟区块链,对概念验证和测试非常有帮助。 43 | - [Pantheon私有链](https://docs.pantheon.pegasys.tech/en/latest/Getting-Started/Private-Network-Quickstart/) - 在Docker容器内运行一个由Pantheon节点组成的私有链。 44 | - [Orion](https://github.com/PegaSysEng/orion) - 用于执行PegaSys私有交易的组件。 45 | - [Artemis](https://github.com/PegaSysEng/artemis) - PegaSys提供的以太坊2.0信标链,采用JAVA实现。 46 | - [Cliquebait](https://github.com/f-o-a-m/cliquebait) - 使用docker简化智能合约应用的集成与测试 47 | - [Local Raiden](https://github.com/ConsenSys/Local-Raiden) - 在docker容器内运行一个本地Raiden网络,可用于演示和测试 48 | - [Private networks deployment scripts](https://github.com/ConsenSys/private-networks-deployment-scripts) - 用于搭建私有PoA网络的开箱即用的部署脚本 49 | - [Local Ethereum Network](https://github.com/ConsenSys/local_ethereum_network) - 用于搭建私有PoW网络的开箱即用的部署脚本 50 | - [Ethereum on Azure](https://docs.microsoft.com/en-us/azure/blockchain-workbench/ethereum-poa-deployment) - 联盟以太坊PoA网络的部署、治理 51 | - [getho](https://getho.io/) - DApp开发平台,包括PoA私有区块链和智能合约测试工具 52 | - [Ethereum on Google Cloud](https://console.cloud.google.com/marketplace/details/click-to-deploy-images/ethereum?filter=category:developer-tools) - 搭建基于PoW共识的以太坊区块链 53 | - [Infura](https://infura.io/) - 提供以太坊API,支持Mainnet, Ropsten, Rinkeby, Goerli和Kovan 54 | 55 | - [Pantheon Private Network](https://docs.pantheon.pegasys.tech/en/latest/Getting-Started/Private-Network-Quickstart/) - 56 | - [Testchains](https://github.com/Nethereum/TestChains) - 用于快速响应的预配置 .NET 开发链 57 | - [Blazor/Blockchain Explorer](https://github.com/Nethereum/NethereumBlazor) - Wasm区块链浏览器 58 | - [Cheshire](https://github.com/endless-nameless-inc/cheshire) - 加密猫API和智能合约的本地沙箱实现,封装为Truffle Box。 -------------------------------------------------------------------------------- /content/dev/数据查询.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "查询以太坊数据" 3 | date: 2019-10-21T06:42:46+08:00 4 | weight: 5014 5 | menu: 6 | docs: 7 | name: "数据查询" 8 | parent: "dev" 9 | identifier: "" 10 | --- 11 | 12 | ## 区块浏览器 13 | 14 | 15 | - [Etherchain](https://www.etherchain.org/) 16 | - [Etherscan](https://etherscan.io/) 17 | - [Ethplorer](https://ethplorer.io/) 18 | - [BlockScout](https://blockscout.com/eth/mainnet) 19 | - [Trivial](https://trivial.co/) 20 | - [EnjinX](https://enjinx.io/) 21 | 22 | 23 | 24 | ## 浏览DAPP 25 | 26 | - [Loanscan - Ethereum Loan Explorer](https://loanscan.io/) 27 | - [State of the dApps](https://www.stateofthedapps.com/) 28 | - [Settle - Decentralized Finance OS](https://settle.finance/) 29 | - [通证数据](https://tokendata.tech/eth/dapps) 30 | - [ÐAppBirds](https://dappbirds.com/explore?chain_type=1¤t_page=1) 31 | 32 | 33 | 34 | ## 浏览以太坊相关数据 35 | 36 | - [查看以太坊账户数据](https://www.ethtective.com/) 37 | - [查看以太坊网络状态](https://ethstats.net/) 38 | - [查看以太坊网络状态 (New)](https://ethstats.io/) 39 | - [以太坊历史燃料单价图表](https://gitcoin.co/gas/history?breakdown=weekly) 40 | - [以太坊燃料站](https://ethgasstation.info/) 41 | - [ Kaggle以太坊区块大数据查询](https://www.kaggle.com/bigquery/ethereum-blockchain) 42 | - [以太坊网络哈效率](https://2miners.com/eth-network-hashrate) 43 | - [以太坊网络难度](https://2miners.com/eth-network-difficulty) -------------------------------------------------------------------------------- /content/dev/智能合约.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "以太坊智能合约" 3 | date: 2019-10-21T06:40:59+08:00 4 | weight: 5008 5 | menu: 6 | docs: 7 | name: "智能合约" 8 | parent: "dev" 9 | identifier: "" 10 | --- 11 | 12 | ## 智能合约语言 13 | 14 | 15 | ## 智能合约标准及开发库 16 | 17 | ### [ERCs](https://eips.ethereum.org/erc) - 以太坊ERC仓库 18 | 19 | - 代币 20 | - [ERC-20](https://eips.ethereum.org/EIPS/eip-20)([ERC-20中文版](https://learnblockchain.cn/docs/eips/eip-20.html)) - 同质化代币合约标准 21 | - [ERC-721](https://github.com/ethereum/eips/issues/721)([ERC-721中文版](https://learnblockchain.cn/docs/eips/eip-721.html)) - 非同质化代币合约标准 22 | - [ERC-777](https://eips.ethereum.org/EIPS/eip-777) ([ERC-777中文版](https://learnblockchain.cn/docs/eips/eip-777.html)) - 同质化代币合约改进标准 23 | - [ERC-918](https://eips.ethereum.org/EIPS/eip-918) - 可铸造代币标准 24 | - [ERC-165](https://eips.ethereum.org/EIPS/eip-165) - 发布和检测智能合约所实现接口的标准 25 | - [ERC-725](https://eips.ethereum.org/EIPS/eip-725) - 密钥管理和执行的代理合约,目的是建立基于区块链的身份识别 26 | - [ERC-173](https://eips.ethereum.org/EIPS/eip-173) - 合约持有者判定接口标准 27 | 28 | ### 智能合约开发库 29 | 30 | - [Zeppelin](https://github.com/OpenZeppelin/openzeppelin-solidity) - 包含经过测试的可复用智能合约, 例如[SafeMath](https://openzeppelin.org/api/docs/math_SafeMath.html) 和 [ZeppelinOS](https://github.com/zeppelinos/zos) 31 | - [cryptofin-solidity](https://github.com/cryptofinlabs/cryptofin-solidity) - 用于构建安全、节约的智能合约的solidity开发库 32 | - [Modular Libraries](https://github.com/Modular-Network/ethereum-libraries) - 一组用于EVM区块链的开发包 33 | - [DateTime Library](https://github.com/bokkypoobah/BokkyPooBahsDateTimeLibrary) - 一个gas低耗的Solidity日期和时间库 34 | - [Aragon](https://github.com/aragon/aragon) - DAO协议,包含[aragonOS智能合约开发框架](https://github.com/aragon/aragonOS) , 关注焦点是可升级性和治理。 35 | - [ARC](https://github.com/daostack/arc) - DAO操作系统,DAO技术栈的基础层 36 | - [0x](https://github.com/0xProject) - DEX 协议 37 | - [Token Libraries with Proofs](https://github.com/sec-bit/tokenlibs-with-proofs) - 包含代币合约的正确性证明实现。 38 | - [Provable API](https://github.com/provable-things/ethereum-api) - 提供使用Provable服务的合约,支持链下动作、数据提取和计算 -------------------------------------------------------------------------------- /content/dev/更多.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "更多" 3 | date: 2019-11-08T11:55:31+08:00 4 | weight: 5014 5 | menu: 6 | docs: 7 | name: "更多" 8 | parent: "dev" 9 | identifier: "" 10 | --- 11 | 12 | ## Summary 13 | 14 | Ethereum is a blockchain, first-and-foremost. Its primary artifact is the smart contract, written in the programming language Solidity, a language with syntax similar to JavaScript. Currently Vyper is being developed to offer another choice when developing smart contracts, with syntax similar to Python. 15 | 16 | ### Languages 17 | 18 | Solidity - Most commonly used language. 19 | 20 | - [Docs](https://solidity.readthedocs.io/en/latest/) 21 | - [GitHub](https://github.com/ethereum/solidity) 22 | - [Community Audited Contracts](https://github.com/OpenZeppelin/openzeppelin-contracts) by OpenZeppelin 23 | 24 | Vyper - Newer language focused on security and auditability. 25 | 26 | - [Docs](https://vyper.readthedocs.io/en/latest/) 27 | - [GitHub](https://github.com/ethereum/vyper) 28 | 29 | ### Clients 30 | 31 | go-ethereum - Official Go Implementation 32 | 33 | - [Docs](https://github.com/ethereum/go-ethereum/wiki) 34 | - [GitHub](https://github.com/ethereum/go-ethereum) 35 | 36 | Parity Ethereum - Rust Implementation 37 | 38 | - [Docs](https://wiki.parity.io/Setup) 39 | - [GitHub](https://github.com/paritytech/parity-ethereum) 40 | 41 | ## Development Chats/Forums 42 | 43 | - [Ethereum Gitter](https://gitter.im/ethereum/home) 44 | - [Solidity Gitter](https://gitter.im/ethereum/solidity/) 45 | - [Web3.js Gitter](https://gitter.im/ethereum/web3.js) 46 | - [ETH 2.0 Gitter](https://gitter.im/ethereum/sharding) 47 | - [ETH Research Discourse](https://ethresear.ch/) 48 | - [Ethereum Developer Discord](https://discord.gg/5W5tVb3) 49 | 50 | ## Resources 51 | 52 | - [Mastering Ethereum by Andreas M. Antonopoulos, Gavin Wood](https://github.com/ethereumbook/ethereumbook) 53 | - [Ethereum Developer Tools List](https://github.com/ConsenSys/ethereum-developer-tools-list) 54 | - [Awesome Solidity List](https://github.com/bkrem/awesome-solidity) 55 | - [Awesome Ethereum Security List](https://github.com/trailofbits/awesome-ethereum-security) 56 | - [Best Practices by Consensys](https://consensys.github.io/smart-contract-best-practices/) 57 | - [Awesome Ethereum Virtual Machine List](https://github.com/ethereum/wiki/wiki/Ethereum-Virtual-Machine-(EVM)-Awesome-List) 58 | - [Ethereum Development with Golang](https://goethereumbook.org/en/) 59 | - [More resources can be found here](https://docs.ethhub.io/ethereum-basics/resources#ethereum-development) 60 | 61 | 62 | 63 | > 本文来自:docs.ethhub.io/ethereum-basics/development/ethereum-development-basics/ -------------------------------------------------------------------------------- /content/dev/最佳实践.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "最佳实践" 3 | date: 2019-11-08T11:40:44+08:00 4 | weight: 5012 5 | menu: 6 | docs: 7 | name: "最佳实践" 8 | parent: "dev" 9 | identifier: "" 10 | --- 11 | 12 | 13 | 14 | ## 智能合约设计模式 15 | 16 | - Dappsys: Safe, simple, and flexible Ethereum contract building blocks 17 | - 包含了以太坊Solidity合约开发中常见问题的解决方案,例如 18 | - [白名单](https://steemit.com/ethereum/@nexusdev/dapp-a-day-11-whitelist-boring) 19 | - [可升级的ERC20代币](https://steemit.com/ethereum/@nikolai/dapp-a-day-6-upgradeable-tokens) 20 | - [ERC20代币保险库](https://steemit.com/ethereum/@nexusdev/dapp-a-day-18-erc20-token-vault) 21 | - [身份验证(RBAC)](https://steemit.com/ethereum/@nikolai/dapp-a-day-4-access-control-via-auth) 22 | - […更多…](https://github.com/dapphub/dappsys) 23 | - 提供[MakerDAO](https://github.com/makerdao/maker-otc) or [The TAO](https://github.com/ryepdx/the-tao)的开发模块 24 | - 在创建自己的、未测试的解决方案之前应当进行咨询 25 | - 使用方法说明参见[Dapp-a-day 1-10](https://steemit.com/@nikolai) 以及 [Dapp-a-day 11-25](https://steemit.com/@nexusdev) 26 | - OpenZeppelin Contracts: An open framework of reusable and secure smart contracts in the Solidity language. 27 | - 可能是使用最广泛的开发库和智能合约 28 | - 类似于Dappsys,不过与Truffle框架的集成更紧密 29 | - [博客:安全审计方面的最佳实践](https://blog.openzeppelin.com/) 30 | - [Assembly高级工作组](https://github.com/androlo/solidity-workshop) 31 | - [简化以太坊多签](https://medium.com/@ChrisLundkvist/exploring-simpler-ethereum-multisig-contracts-b71020c19037) - 32 | - [CryptoFin Solidity Auditing Checklist](https://github.com/cryptofinlabs/audit-checklist) - 主网上线的智能合约的审计清单 33 | - aragonOS: A smart contract framework for building DAOs, Dapps and protocols 34 | - 可升级性: 智能合约可以升级到新版本 35 | - 权限控制:通过使用`auth` 和`authP`修饰符,你可以保护合约功能只允许授权用户访问 36 | - 转发器: aragonOS应用可以将其执行意图转发至其他应用 37 | 38 | ## 可升级性 39 | 40 | - Blog von Elena Dimitrova, Dev at colony.io 41 | - https://blog.colony.io/writing-more-robust-smart-contracts-99ad0a11e948 42 | - https://blog.colony.io/writing-upgradeable-contracts-in-solidity-6743f0eecc88 43 | - Aragon research blog 44 | - [库驱动的开发](https://blog.aragon.org/library-driven-development-in-solidity-2bebcaf88736) 45 | - [Solditiy代码高级部署技术](https://blog.aragon.org/advanced-solidity-code-deployment-techniques-dc032665f434/) 46 | - [OpenZeppelin的代理库](https://blog.openzeppelin.com/proxy-libraries-in-solidity-79fbe4b970fd/) -------------------------------------------------------------------------------- /content/dev/测试.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "以太坊智能合约测试" 3 | date: 2019-10-21T06:42:14+08:00 4 | weight: 5007 5 | menu: 6 | docs: 7 | name: "测试" 8 | parent: "dev" 9 | identifier: "" 10 | --- 11 | 12 | 在测试前你应该[理解以太坊Gas和手续费](https://yushuangqi.com/dapps/ethereum-gas-and-fee.html),测试不仅仅要保证业务无错误,还需要使用更可能少的Gas。 13 | 14 | ## 测试币 15 | 16 | 当你需要接入到公共网络中,则需要领一些测试币才能发送交易。一般各种公共测试环境都提供水龙头🚰给你发放测试币。 17 | 18 | - [Rinkeby faucet](https://faucet.rinkeby.io/) 19 | + [以太坊学习笔记(一)——免费获得测试ETH](https://www.jianshu.com/p/534b2e2e01d4) 20 | - [Kovan faucet](https://github.com/kovan-testnet/faucet) 21 | - [Ropsten faucet](http://faucet.ropsten.be:3001/) 22 | - [Goerli faucet](https://goerli-faucet.slock.it/) 23 | - [Universal faucet](https://faucets.blockxlabs.com/) 24 | - [Nethereum.Faucet](https://github.com/Nethereum/Nethereum.Faucet) - 一个C#/.NET的faucet 25 | 26 | ## 测试工具 27 | 28 | - [Truffle Teams](https://truffleframework.com/teams) - 用于truffle项目的零配置持续集成 29 | - [Solidity code coverage](https://github.com/0xProject/0x-monorepo/tree/development/packages/sol-coverage) - Solidity代码覆盖工具 30 | - [Solidity coverage](https://github.com/sc-forks/solidity-coverage) - 用于Solidity智能合约代码覆盖检查的替代工具 31 | - [Solidity function profiler](https://github.com/EricR/sol-function-profiler) - Solidity合约函数性能分析器 32 | - [Sol-profiler](https://github.com/Aniket-Engg/sol-profiler) - 另一个Solidity智能合约性能分析器 33 | - [Espresso](https://github.com/hillstreetlabs/espresso) - 高速、并行、热从在的solidity测试框架 34 | - [Eth tester](https://github.com/ethereum/eth-tester) - 以太坊应用测试工具套件 35 | - [Cliquebait](https://github.com/f-o-a-m/cliquebait) - 使用docker简化智能合约应用的集成与测试 36 | - [Hevm](https://github.com/dapphub/dapptools/tree/master/src/hevm) - 特别用于单元测试和智能合约调试的EVM实现 37 | - [Ethereum graph debugger](https://github.com/fergarrui/ethereum-graph-debugger) - Solidity 图形化调试器 38 | - [Tenderly CLI](https://github.com/Tenderly/tenderly-cli) - 提供容易读懂的栈回溯,加速应用开发 39 | - [Solhint](https://github.com/protofire/solhint) - 代码分析器,用于智能合约开发的安全、代码风格及最佳实践规则 40 | - [Ethlint](https://github.com/duaraghav8/Ethlint) - 用于识别和修正solidity中的代码风格和安全问题的代码分析器,前身为Solium 41 | - [Decode](https://github.com/dteiml/decode) - 一个NPM包,用于解析提交到本地testrpc节点的交易,以便开发者阅读和理解交易内容 42 | - [truffle-assertions](https://github.com/rkalis/truffle-assertions) - 一个NPM包,包含额外的断言及测试辅助工具,支持事件是否触发的断言。 43 | - [Psol](https://github.com/Lamarkaz/psol) - Solidity词法预处理器,使用mustache.js风格的语法,支持宏、条件编译,可自动包含远程依赖 44 | - [solpp](https://github.com/merklejerk/solpp) - Solidity预处理器,包含指令、表达式语言、高精度计算等功能 45 | - [Decode and Publish](https://flightwallet.org/decode-eth-tx/) – 解析、发布以太坊裸交易,类似于https://live.blockcypher.com/btc-testnet/decodetx/ 46 | - [Doppelgänger](https://getdoppelganger.io/) - 用于单元测试的智能合约依赖模拟库 47 | - [rocketh](https://github.com/wighawag/rocketh) - 测试以太坊智能合约的库,支持自选web库和测试运行期。 48 | - [pytest-cobra](https://github.com/cobraframework/pytest-cobra) - PyTest的以太坊智能合约插件 -------------------------------------------------------------------------------- /content/dev/部署.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "部署" 3 | date: 2019-10-21T06:42:17+08:00 4 | weight: 5006 5 | menu: 6 | docs: 7 | name: "部署" 8 | parent: "dev" 9 | identifier: "" 10 | --- 11 | 12 | 13 | {{}} 14 | 马上就会编辑 15 | {{}} -------------------------------------------------------------------------------- /content/dev/高级.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "以太坊进阶开发" 3 | date: 2019-11-08T11:59:46+08:00 4 | weight: 5013 5 | menu: 6 | docs: 7 | name: "高阶" 8 | parent: "dev" 9 | identifier: "" 10 | --- 11 | 12 | 13 | ## 可扩展性 14 | 15 | ### 支付与状态通道 16 | 17 | - [Ethereum Payment Channel](https://medium.com/@matthewdif/ethereum-payment-channel-in-50-lines-of-code-a94fad2704bc) - 50行代码实现以太坊支付通道 18 | - [µRaiden Documentation](https://microraiden.readthedocs.io/) - µRaiden 发送/接收指南 19 | 20 | ### Plasma 21 | 22 | - [学习Plasma](https://github.com/ethsociety/learn-plasma) - 涵盖所有Plasma变体(MVP/Cash/Debit) 23 | - [Plasma MVP](https://github.com/omisego/plasma-mvp) - OmiseGO 的Plasm最小可行产品实现 24 | - [Plasma MVP Golang](https://github.com/kyokan/plasma) - Plasma的Golang最小可行产品实现 25 | - [Plasma Cash](https://github.com/omisego/plasma-cash) - 简单的Plasma现金实现 26 | - [Plasma Exit](https://github.com/mesg-foundation/application-plasma-exit) - 自动监测或退出Omisego Plasma网络 27 | - [Plasma OmiseGo Watcher](https://github.com/mesg-foundation/service-plasma-omisego-watcher) - 访问Plasma OmiseGo网络并通知任何拜占庭事件 28 | 29 | ### 侧链 30 | 31 | - POA Network 32 | - [POA Bridge](https://bridge.poa.net/) 33 | - [POA Bridge UI](https://github.com/poanetwork/bridge-ui) 34 | - [POA Bridge Contracts](https://github.com/poanetwork/poa-bridge-contracts) 35 | - [Loom Network](https://github.com/loomnetwork) 36 | 37 | ## 隐私与保密 38 | 39 | ### ZKSNARKS[¶](http://localhost:1313/dev/安全分析.html#zksnarks) 40 | 41 | - [ZoKrates](https://github.com/Zokrates/ZoKrates) - 以太坊 zkSNARKS工具箱 42 | - [The AZTEC Protocol](https://github.com/AztecProtocol/AZTEC) - 以太坊网络的保密交易,在主网已激活 43 | - 代理再加密 (PRE) 44 | - [NuCypher Network](https://github.com/nucypher/nucypher) - 代理再加密网络,用于实现去中心化系统的数据隐私 45 | - [pyUmbral](https://github.com/nucypher/pyumbral) - PRE密码学开发库 46 | - 全同态加密 (FHE) 47 | - [NuFHE](https://github.com/nucypher/nufhe) - GPU 加速的FHE开发库 -------------------------------------------------------------------------------- /content/ecology/Gas价格计算器.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Gas价格计算器" 3 | date: 2019-10-21T06:29:07+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "Gas价格计算器" 8 | parent: "ecology" 9 | identifier: "" 10 | --- 11 | 12 | ## 理解 gas 13 | 14 | **“gas” 是以太坊中使用的特殊单位的名称**。它测量一个操作或一组操作需要执行多少” 工作” 量:例如,计算一个 [Keccak256 加密哈希函数](https://learnblockchain.cn/docs/solidity/units-and-global-variables.html?#index-5),每次计算哈希时需要 30 个 gas,再加上每 256 位被哈希的数据多花费 6 个 gas。**在以太坊平台上通过交易或合约执行的每个操作都会消耗一定数量的 gas**,而需要更多计算资源的操作比需要少量计算资源的消耗的 gas 更多。 15 | 16 | gas 之所以重要,是因为它有助于**确保提交到网络的交易支付适当的费用**。通过要求交易为其执行的每个操作 (或合约执行) 付费,可以确保网络不会因执行大量对任何人都没有价值的密集工作而陷入僵局。这与比特币交易费用的策略不一样,后者仅基于交易的千字节大小。由于[以太坊](https://learnblockchain.cn/2017/11/20/whatiseth/)允许任意复杂的计算机代码运行,即使是很短的代码也会可能导致大量计算工作。**因此,直接衡量工作量很重要,而不是仅仅根据交易或合约的长度来确定费用**。 17 | 18 | ## 支付 gas 19 | 20 | 那么,如果 gas 基本上是一个交易费用,那如何支付它?这是它变得有点棘手的地方。**尽管 gas 是可以测量工作的单位,却没有任何实际的 gas 代币(Token)来。也就是说,你不能拥有 1000 个 gas**。相反,gas 只存在于[以太坊虚拟机](https://learnblockchain.cn/2019/04/09/easy-evm/)内,作为正在执行多少工作的计数。当涉及到实际支付 gas,则是收取一定数量的以太币 ether(以太坊网络原生代币)作为交易费,用户奖励矿工生产块。 21 | 22 | 这也许看起来很奇怪。为什么操作不能直接用以太币(ether) 来衡量成本?答案是以太币像比特币一样,市场价格变化迅速!但是计算成本不会仅仅因为以太价格的变化而上升或下降。因此,**将计算价格与以太币价格区分开来是很有帮助的**,这样,每次市场波动时,操作成本都不必改变。 23 | 24 | 这里的术语有点乱。EVM 的执行是需要消耗 gas 的 ,而 gas 本身使用 gas 价格 (用以太币表示) 来衡量。每笔交易都要指定愿意为单位 gas 支付的 gas 价格(gas price),这是两者的结合,**gas 消耗量 \* gas 价格 = 交易费用**。 这允许市场决定以太价格与计算操作成本 (以 gas 衡量) 之间的关系。 25 | 26 | 虽然很棘手,但了解 gas 消耗量及 gas 价格区别很重要,它给初学者带来了以太坊交易中最令人困惑的事情: **交易耗尽了 gas(out-of-gas)与交易没有足够高的费用有区别的。**。如果我在交易中设定的 gas 价格太低,没人会在第一时间运行我的交易,矿工根本不会将其打包到区块链中。但是,如果我提供了一个可接受的 gas 价格,然后交易有太多的计算工作(消耗的太多的 gas),合并起来的 gas 费用超过我附加的费用,gas 就会被矿工花费掉并停止处理交易,所做的变更也会被还原,但它仍将其作为” 失败的交易” 包含在区块链中,矿工收取它的费用。这似乎很苛刻,但是当你意识到矿工的真正工作是在执行计算时,可以看到他们也永远收不回这些资源。因此,即使因设计糟糕的交易消耗完了 gas,你为矿工所做的工作支付报酬是公平的。 27 | 28 | 提供很大的 gas 也不同于提供太高的 gas 价格。*如果设定了一个非常高的 gas 价格,你最终将为几个少量操作支付大量的以太币*,就像设置一个超高交易费用的比特币交易。交易肯定会被优先处理,但你的钱不见了。但是,如果你提供了正常的 gas 价格,并且提供的 gas 数量比交易消耗的 gas 所需的更多,超额金额将退还给你。矿工们只收取你实际工作的费用。**你可以将 gas 价格视为矿工的小时工资,将 gas 消耗量视为完成的工作时间**。 29 | 30 | gas 有很多其他的微妙之处,但这些是应该了解的基本知识!**Gas 是使支持复杂计算的以太坊网络得以” 安全” 工作的关键**,因为任何失控的程序只有在请求运行者提供资金时才能持续。当资金不足时,矿工们就停止工作。而且**在程序中所犯的错误只会影响付费使用它的人** —— 网络的其他部分不会因为这个错误而出现性能问题。如果没有这种关键技术,通用区块链的想法将完全不可能。 31 | 32 | ## 结论 33 | 34 | - gas 是计算费用的方式。 35 | - 费用(fee)仍然以以太(ether)支付,但是它与 gas 不同。 36 | - **gas 消耗量**是执行的事务的工作量,如劳动小时数、车辆行驶的公里数,而 gas 价格类似于你为完成工作支付的小时工资。两者的结合决定了总交易费用。 37 | - 如果 **gas 价格**过低,没有人会处理你的交易。 38 | - 如果你的 **gas 价格**正常,但你的交易的 **gas 消耗量**超出” 预算” 会导致交易失败,仍最为失败交易进入区块链,并且无法收回支付的费用。 39 | - 它确保没有程序可以永远运行,并且人们会小心运行他们的代码。它使矿工和用户都免受坏代码的影响。 40 | 41 | 42 | 43 | ## Gas 计算 44 | 45 | - [查看以太坊网络状态 (New)](https://ethstats.io/) 46 | - [以太坊历史燃料单价图表](https://gitcoin.co/gas/history?breakdown=weekly) 47 | - [以太坊燃料站](https://ethgasstation.info/) 48 | 49 | 50 | 51 | > 原文链接:https://learnblockchain.cn/2019/06/11/gas-mean/ -------------------------------------------------------------------------------- /content/ecology/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "以太坊生态" 3 | date: 2019-10-21T06:26:22+08:00 4 | weight: 9999 5 | --- 6 | 7 | 8 | {{}} 9 | 马上就会编辑 10 | {{}} -------------------------------------------------------------------------------- /content/ecology/企业.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "企业" 3 | date: 2019-10-21T06:32:38+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "企业" 8 | parent: "ecology" 9 | identifier: "" 10 | --- 11 | 12 | 13 | {{}} 14 | 马上就会编辑 15 | {{}} -------------------------------------------------------------------------------- /content/ecology/区块浏览器.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "区块浏览器" 3 | date: 2019-10-21T06:28:45+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "区块浏览器" 8 | parent: "ecology" 9 | identifier: "" 10 | --- 11 | 12 | 13 | - [Etherchain](https://www.etherchain.org/) 14 | - [Etherscan](https://etherscan.io/) 15 | - [Ethplorer](https://ethplorer.io/) 16 | - [BlockScout](https://blockscout.com/eth/mainnet) 17 | - [Trivial](https://trivial.co/) 18 | - [EnjinX](https://enjinx.io/) 19 | -------------------------------------------------------------------------------- /content/ecology/去中心化交易所.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "去中心化交易所" 3 | date: 2019-10-21T06:31:12+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "去中心化交易所" 8 | parent: "ecology" 9 | identifier: "" 10 | --- 11 | 12 | 13 | {{}} 14 | 马上就会编辑 15 | {{}} -------------------------------------------------------------------------------- /content/ecology/去中心数据安全协议.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "去中心数据安全协议" 3 | date: 2019-10-21T06:31:25+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "去中心数据安全协议" 8 | parent: "ecology" 9 | identifier: "" 10 | --- 11 | 12 | 13 | {{}} 14 | 马上就会编辑 15 | {{}} -------------------------------------------------------------------------------- /content/ecology/去中心金融.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "去中心金融DeFi" 3 | date: 2019-10-21T06:32:04+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "去中心金融" 8 | parent: "ecology" 9 | identifier: "" 10 | --- 11 | 12 | DeFi 的核心:通证化一切资产,随时随地交易,Defi是一场运动。 `DeFi` 项目可分为:稳定币、去中心化交易所、支付、指数产品、金融衍生品包括借贷市场和预测市场等。 13 | 14 | ## Maker && DAI 15 | 16 | Dai (以太美元),是建立在以太坊上的第一个去中心化稳定加密货币,可以阅读[理解去中心化 稳定币 DAI](https://learnblockchain.cn/2019/03/19/understand_dai/)了解更多。 17 | 18 | - [Maker 官网](https://makerdao.com/zh-CN/) 19 | - [抵押借Dai](https://cdp.makerdao.com/) 20 | 21 | ## 0x 协议 22 | 23 | 0x是去中心化Token交易的开源协议:链下撮合,链上交易, 0x允许任何用户或应用程序创建去中心化的交易应用。 24 | 25 | - [0x官网](https://0x.org) 26 | - [0x 白皮书](https://github.com/0xProject/whitepaper/raw/master/0x_white_paper.pdf) 27 | - [0x 协议GitHub](https://github.com/0xProject) 28 | 29 | ## Hydro 30 | 31 | 0x协议的改进(分叉),可阅读[Hydro的改进](https://learnblockchain.cn/2019/04/13/defi-hydro/) 32 | 33 | - [Hydro 官网](https://hydroprotocol.io/) 34 | - [Hydro SDK](https://github.com/HydroProtocol/hydro-sdk) 35 | 36 | ## Kyber 37 | 38 | Kyber 利用储备机制来为网络提供流动性(Kyber总保持一个特别的储备,为交易提供一定量的token)。 [Kyber 官网](https://kyber.network/) [Token 兑换](https://kyberswap.com/) 39 | 40 | ## UniSwap 41 | 42 | 非常受欢迎的代币交换协议,通过DApp [Uniswap Exchange](https://uniswap.exchange/) 就可以兑换代币。 43 | 44 | - [UniSwap 官网](https://uniswap.io/) 45 | 46 | ## Compound 47 | 48 | 一个去中心化数字资产银行,存代币收利息 49 | 50 | - [Compound 官网](https://compound.finance/) 51 | - [存款DApp](https://app.compound.finance/) 52 | 53 | ## Bancor 54 | 55 | 代币交换协议智能合约,任意两种 ERC-20 代币的直接转换。 [Bancor 官网](https://www.bancor.network/) 支持换币。 56 | 57 | ## Loopring 路印协议 58 | 59 | 据说路印可以做到跨链兑换。 60 | 61 | ## 跨境支付 Wyre 62 | 63 | [Wyre 官网](https://www.sendwyre.com/) 64 | 65 | ## Balance 金融钱包 66 | 67 | 支持多个Defi 项目查看余额、贷款、利息等等 68 | 69 | [Balance 官网](https://balance.io/) [Balance Github](https://github.com/balance-io/) -------------------------------------------------------------------------------- /content/ecology/教育.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "教育" 3 | date: 2019-10-21T06:30:11+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "教育" 8 | parent: "ecology" 9 | identifier: "" 10 | --- 11 | 12 | 13 | {{}} 14 | 马上就会编辑 15 | {{}} -------------------------------------------------------------------------------- /content/ecology/服务.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "服务" 3 | date: 2019-10-21T06:29:47+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "服务" 8 | parent: "ecology" 9 | identifier: "" 10 | --- 11 | 12 | ## 提供软件即服务(SaaS)免费增值模式 13 | 14 | 在 2019 年第三季度,ConsenSys 旗下产品发布了新的软件即服务模式,以改善客户服务水平协议,满足日趋成熟的以太坊市场需求,包括基础设施、分析和开发者工具。 15 | 16 | 随着以太坊中功能性服务和工具市场的发展,客户的需求也随之增长。 Infura,MythX 和 Alethio 推出了订阅服务,以支持以太坊网络从初级用户到企业级用户中使用最广泛的基础架构,安全性和数据分析工具。 17 | 18 | - Infura 作为以太坊基础设施提供商推出了 Infura +,这是 Infura 的以太坊 API 高级订阅服务,可为各种规模的应用程序提供强化的以太坊基础设施支持。用户可以从分层服务选项(核心开发者、开发者、团队和增长)中进行选择,以执行准确的计划,使基于以太坊的项目实现从概念证明到全球性产品。 19 | - MythX 是用于以太坊智能合约的首要安全性分析服务,推出了 MythX Pro。现在,MythX 的用户可以通过 Daisy Payments 提供的透明简便的 DAI 稳定币订阅服务来检测各种智能合约漏洞并帮助预防安全漏洞。 20 | - Alethio 宣布推出 Alethio API PRO,使开发者能够直接以稳健可靠的方式实时访问索引化的、合成后的链上以太坊数据。Alethio 的 API 解决了以太坊的数据碎片化问题,这个问题令许多主网用户无法可靠简洁地访问基于区块链的数据。 21 | 22 | ## MetaMask 插件系统 23 | 24 | 在过去的四年中,MetaMask 帮助大量的 Web3 开发者引入了一种新的计算范例:用户控制自己的帐户,帐户控制所有资金。 25 | 26 | 基于浏览器的 MetaMask 扩展应用将以太坊融合进了普通的 Web 应用程序,但是面对新的扩容性策略和智能合约协议,做出一些改变是必需的。许多智能合约协议都需要与用户的帐户进行交互,并代表用户持续运行脚本来跟踪状态或预处理交易。因此,MetaMask 并没有发布某些特定功能,而是创建了一个无需许可的插件系统。 27 | 28 | MetaMask 插件是一个脚本,通常在 ENS 和 IPFS 上提供服务,可为 MetaMask 增加功能性,而新的系统使这一切成为可能。 29 | 30 | - auditAddress API 插件可以在 MetaMask 显示的任何位置添加账户警告或认可,以确保智能合约安全性。 31 | - resolveName API 插件意味着 MetaMask 不会指定用户为分布式域名系统(DNS)订阅的系统。 32 | - 一套用于第二层(Layer 2)扩容性解决方案的 API 插件,帮助 DApp 在以太坊主链下开发去中心化协议。 33 | - ShareAPI 使得任何插件作者都可以轻松地为用户访问的站点创建自己的 API,无论是简单的 RPC API 或是高级的事件驱动 API 都能实现。 34 | - 供开发者入门学习的示例插件,包括 IPFS, Starkware 和 Blocknative 插件。您可以在此处查看更多示例。 35 | 36 | 37 | 38 | > 内容编辑自 https://learnblockchain.cn/2019/10/12/DEVCON/ -------------------------------------------------------------------------------- /content/ecology/游戏.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "游戏" 3 | date: 2019-10-21T06:30:32+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "游戏" 8 | parent: "ecology" 9 | identifier: "" 10 | --- 11 | 12 | 13 | {{}} 14 | 马上就会编辑 15 | {{}} -------------------------------------------------------------------------------- /content/ecology/激励工具.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "激励工具" 3 | date: 2019-10-21T06:31:55+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "激励工具" 8 | parent: "ecology" 9 | identifier: "" 10 | --- 11 | 12 | 13 | {{}} 14 | 马上就会编辑 15 | {{}} -------------------------------------------------------------------------------- /content/ecology/钱包.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "钱包" 3 | date: 2019-10-21T06:28:26+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "钱包" 8 | parent: "ecology" 9 | identifier: "" 10 | --- 11 | 12 | 13 | {{}} 14 | 马上就会编辑 15 | {{}} -------------------------------------------------------------------------------- /content/eth2/pos.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Pos" 3 | date: 2019-10-21T05:42:59+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "pos" 8 | parent: "eth2" 9 | --- 10 | 11 | 12 | {{}} 13 | 马上就会编辑 14 | {{}} -------------------------------------------------------------------------------- /content/eth2/分片.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "分片" 3 | date: 2019-10-21T05:42:49+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "分片" 8 | parent: "eth2" 9 | --- 10 | 11 | 12 | {{}} 13 | 马上就会编辑 14 | {{}} -------------------------------------------------------------------------------- /content/governance/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "以太坊治理" 3 | date: 2019-10-21T06:35:27+08:00 4 | weight: 9999 5 | # menu: 6 | # docs: 7 | # name: "以太坊治理" 8 | # # parent: "governance" 9 | # identifier: "governance" 10 | --- 11 | 12 | 13 | {{}} 14 | “善意的善政是我们政府的标志。诚信执行是我们的核心热情。” — Narendra Modi 15 | {{}} 16 | 17 | 区块链是非中心化系统,本质上是由一套在软件中设定一套协议规则所运行的去中心化软件。这意味着加入网络的任何设备(节点、钱包)都必须运行和本协议相同的软件才行。 18 | 19 | **“节点运营商”**是运行协议的节点的所有者和管理者。大多数节点运营商不想编写太多软件。编写实现共识协议的软件,对任何人来说都是一项技术挑战。结果是,节点操作员将依靠一些软件存储库(通常托管在Github平台)为他们提供他们选择运行的软件。 20 | 21 | 区块链的**“核心开发人员”**是从事实现该协议的软件的软件开发人员。开发人员的流程应确保所发布软件的质量,并且通常对维护其软件存储库的合法性非常感兴趣,因为他们希望看到人们在使用他们的软件(而不是别人的软件)。 22 | 23 | 24 | 25 | ## 治理的关键组成部分 26 | 27 | **1.激励措施** 28 | 29 | 系统中的每个组都有其自己的激励机制。这些激励措施不一定总是与系统中的所有其他组100%保持一致。小组将提出随着时间的推移对他们有利的更改。有机体偏向于自己的生存。这通常表现为奖励结构,货币政策或权力平衡的变化。 30 | 31 | **2.协调机制** 32 | 33 | 由于不太可能所有团队始终都具有100%的激励一致性,因此每个团队围绕其共同激励进行协调的能力对于他们影响变化至关重要。如果一个团体能比另一个团体更好地进行协调,就会造成有利于他们的力量失衡。 34 | 35 | 实际上,一个主要因素是链上与链外可以完成多少协调,链上的协调使协调更容易。在某些新的区块链(例如Tezos或Polkadot)中,链上协调允许更改规则甚至分类账历史本身。 36 | 37 | 38 | 39 | ## 链上治理 40 | 41 | 比特币和以太坊当前的治理系统是非正式的。它们是由中本聪在其原始论文中首次提出的分散式精神设计的。开发人员提交了用于更改区块链的改进建议,并且由主要由开发人员组成的核心小组负责协调利益相关方并达成共识。在这种情况下,利益相关者是矿工(操作节点),开发人员(负责核心区块链算法)和用户(使用和投资各种代币)。 42 | 43 | ### 什么是链上治理? 44 | 45 | 链上治理是用于管理和实施对加密货币区块链变更的系统。在这种类型的治理中,用于发起更改的规则被编码到区块链协议中。开发人员通过代码更新来提出更改,并且每个节点都对接受还是拒绝所提议的更改进行投票。 46 | 47 | ### 它是如何工作的? 48 | 49 | 与非正式治理系统不同,非正式治理系统使用脱机协调和在线代码修改相结合来实现更改,链上治理系统仅在网上工作。通过代码更新提出对区块链的更改。随后,节点可以投票接受或拒绝更改。并非所有节点都具有相同的投票权。与持有数量相对较少的节点相比,持有更多硬币的节点具有更多的投票权。 50 | 51 | 如果更改被接受,则将其包含在区块链中并作为基准。在某些实施链上治理的情况下,如果建议的更改未成功,则更新的代码可能会回滚到基准之前的版本。 52 | 53 | ### 优点 54 | 55 | - 它是一种分散的治理形式 56 | - 更快的变更周转时间 57 | - 硬叉的可能性大大降低 58 | 59 | ### 缺点 60 | 61 | - 低投票率 62 | - 趋向于富裕(拥有更多赌注的用户可以操纵投票) 63 | 64 | ## 链外治理 65 | 66 | ### 什么是链外治理? 67 | 68 | 链下治理的外观和行为与现有世界中的政治非常相似。各种利益集团试图通过一系列协调游戏来控制网络,在这些协调游戏中,他们试图说服其他所有人支持自己的立场。没有代码将这些组绑定到特定的行为,而是根据其他利益相关者的已知偏好,他们选择最符合自己利益的内容。区块链技术和博弈论如此交织是有原因的。 69 | 70 | ### 它是如何工作的? 71 | 72 | 开发人员提交了用于更改区块链的改进建议,并且由主要由开发人员组成的核心小组负责协调利益相关方并达成共识。在这种情况下,利益相关者是矿工(操作节点),开发人员(负责核心区块链算法)和用户(使用和投资各种代币)。 73 | 74 | 各种利益相关者通过私人和社区的话语表达他们对改进建议的认可或不同意。然后,核心开发人员可以了解节点运营商和矿工是否同意升级其软件。理想情况下,各方都同意并且代码更改可以顺利进行。一切都事先宣布,利益相关者有时间更新。 75 | 76 | 在不同意的情况下,利益相关者有两种选择。首先,他们可以尝试说服其他利益相关者采取行动以支持自己。如果他们无法达成共识,则他们可以硬叉起协议并保留或更改他们认为必要的功能。从那里开始,两家连锁店都必须竞争品牌,用户,开发人员的思维共享和散列能力。 77 | 78 | ## 以太坊治理机构 79 | 80 | 81 | 82 | 1. 以太坊DAO 83 | 2. [企业以太坊联盟 EEA](https://entethalliance.org/): 基于以太坊,摩根大通、微软、英特尔等几十家企业成立的区块链联盟。 84 | 85 | ## 观点 86 | 87 | 据CCN 3月19日报道,在最新一期播客节目“Into the Ether”中,Vitalik Buterin现身讨论了以太坊的各方面问题,其中一个主题是以太坊治理模型。主持人Eric Conner询问了Buterin关于链上治理模型的问题,以及他如何应对以太坊治理问题的想法。Vitalik Buterin说,以太坊目前的治理模式被严重低估。根据他的说法,以太坊治理结构之所以被低估,“是因为我们没有给它起个很酷的名字并做广告宣传。”而且老实说,对人们来说,与链上投票、最大币持有者参与度相比,或者说与不变性相比,温和的治理方式并不那么令人兴奋,。”V 神引用了之前的“灾难”事件,比如 2016 年的 DOS 攻击和君士坦丁堡的 bug这些事情,从而强调了社区是如何通过合作来应对各种情况。V 神还表示,以太坊协议肯定会不断改进,他提到,他目前正在搭建一个补丁,通过使钱包是否与多个去中心化应用程序交互更加难以被识别,从而使得以太坊有更强大的隐私功能。 88 | 89 | 90 | 91 | 2019年 3 月 30 日,以太坊核心开发者 Lane Rettig 在推特上宣告:“以太坊的治理已经失败。” 92 | 93 | 他认为,以太坊最终变成了一种技术寡头政治(technocracy),由几个开发者决定协议将增减哪些提案。“可是,今天我们面对的越来越多挑战,都是非技术性的。核心开发者们其实并不想做这些决定,因为他们觉得自己没有资格、没有权利,也应该回避利益冲突,只想好好写代码。” 94 | 95 | Lane 引发了一些讨论。王冠也认为,以太坊的社区治理做得并不好。“他们没有一个机制能保证可以升级。我们不需要有共识,但是需要有方向,现在没有机制让这个系统升级。” 96 | 97 | 98 | ## 资料 99 | 100 | 1. https://docs.ethhub.io/ethereum-basics/governance/ 101 | 2. [观点 | Lane Rettig:以太坊的治理遇上困境了](https://ethfans.org/posts/ethereum-governance-is-stuck-by-lane) 102 | 3. [洞见 | 王博:链上治理的缘起、设计与优缺点](https://ethfans.org/posts/origins-designs-and-advantages-of-on-chain-governance) 103 | 4. [洞见 | 昌用: 从比特币的两次分叉看去中心系统的社区治理](https://ethfans.org/posts/community-governance-of-decentralized-systems-by-changyong) 104 | 5. [洞见 | 阿剑:从链下治理到理想治理模式](https://ethfans.org/posts/from-offline-governance-to-ideal-mode) 105 | 6. [观点 | 公链治理与“社区”的几种意思](https://ethfans.org/posts/governance-in-public-blockchain-and-meanings-of-community) 106 | 7. [观点 | Vlad:区块链治理 101](https://ethfans.org/posts/blockchain-governance-101) 107 | 8. [观点 | 加密经济治理的局限性](https://ethfans.org/posts/the-limits-of-crypto-economic-governance) 108 | 9. [观点 | Vitalik:区块链治理的注意事项](https://ethfans.org/posts/vitalik-voting) 109 | 10. [引介 | 0x 协议治理体系,Part-1:路线图](https://ethfans.org/posts/governance-in-0x-protocol-part-1) 110 | 11. [引介 | 0x 协议治理体系,Part-2:Q&A](https://ethfans.org/posts/governance-in-0x-protocol-part-2) 111 | 12. [区块链治理的历史(1)](https://bihu.com/article/1447606608) 112 | 13. [区块链治理的历史(2):Dash和Decred的治理经验](https://bihu.com/article/1909895795)[ 113 | ](https://bihu.com/article/1909895795) 114 | 14. [区块链治理的历史(3):以太坊DAO和企业以太坊联盟的治理经验](https://bihu.com/article/1547682870)[ 115 | ](https://bihu.com/article/1547682870) 116 | 15. [区块链治理的历史(4): AdChain的治理经验](https://bihu.com/article/1113620895)[ 117 | ](https://bihu.com/article/1113620895) 118 | 16. [区块链治理的历史(5):Maker基金会和MKR治理经验](https://bihu.com/article/1416018243)[ 119 | ](https://bihu.com/article/1416018243) 120 | 17. [区块链治理的历史(6):DigixDAO的治理经验](https://bihu.com/article/1194517722)[ 121 | ](https://bihu.com/article/1194517722) 122 | 18. [区块链治理的历史(7):EOSIO和Libra的治理经验](https://bihu.com/article/1366421639)[ 123 | ](https://bihu.com/article/1366421639) 124 | 19. [区块链治理的历史(8):最佳实践治理方法要点有哪些?](https://bihu.com/article/1060157921)[ 125 | ](https://bihu.com/article/1060157921) -------------------------------------------------------------------------------- /content/governance/人物.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "人物" 3 | date: 2019-10-21T06:38:06+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "人物" 8 | parent: "governance" 9 | identifier: "" 10 | --- 11 | 12 | 13 | {{}} 14 | 马上就会编辑 15 | {{}} -------------------------------------------------------------------------------- /content/governance/会议.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "会议" 3 | date: 2019-10-21T06:37:30+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "会议" 8 | parent: "governance" 9 | identifier: "" 10 | --- 11 | 12 | 13 | {{}} 14 | 马上就会编辑 15 | {{}} -------------------------------------------------------------------------------- /content/governance/社交.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "社交" 3 | date: 2019-10-21T06:37:48+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "社交" 8 | parent: "governance" 9 | identifier: "" 10 | --- 11 | 12 | 13 | {{}} 14 | 马上就会编辑 15 | {{}} -------------------------------------------------------------------------------- /content/governance/社区论坛.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "社区论坛" 3 | date: 2019-10-21T06:37:37+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "社区论坛" 8 | parent: "governance" 9 | identifier: "" 10 | --- 11 | 12 | 13 | {{}} 14 | 马上就会编辑 15 | {{}} -------------------------------------------------------------------------------- /content/governance/组织.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "组织" 3 | date: 2019-10-21T06:37:18+08:00 4 | weight: 9999 5 | menu: 6 | docs: 7 | name: "组织" 8 | parent: "governance" 9 | identifier: "" 10 | --- 11 | 12 | 13 | {{}} 14 | 马上就会编辑 15 | {{}} -------------------------------------------------------------------------------- /content/news/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "以太坊动态" 3 | date: 2019-10-21T06:49:38+08:00 4 | weight: 5001 5 | menu: 6 | docs: 7 | name: "动态" 8 | parent: "news" 9 | identifier: "" 10 | --- 11 | 12 | 13 | {{}} 14 | 马上就会编辑 15 | {{}} -------------------------------------------------------------------------------- /content/roadmap/status.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "以太坊开发进展" 3 | date: 2019-11-02T06:08:38+08:00 4 | weight: 5004 5 | menu: 6 | docs: 7 | name: "开发进展" 8 | parent: "roadmap" 9 | identifier: "" 10 | --- 11 | 12 | 13 | ## 2019年 14 | 15 | + 10 月进展报告: [查看](https://www.unitimes.pro/p/ea418bbfd1c84dae816a1d1475790c1d) 16 | 17 | -------------------------------------------------------------------------------- /content/roadmap/路线图1.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "以太坊1.X开发路线图" 3 | date: 2019-10-21T05:22:51+08:00 4 | weight: 5001 5 | menu: 6 | docs: 7 | name: "路线图1.x" 8 | parent: "roadmap" 9 | --- 10 | 11 | 以太坊的使命是成为一个分布式的世界级计算机,取代传统的服务器集群。我们可以把它想象成一台全世界都可以使用的计算设备,并且是不能被停止与关闭的。 12 | 13 | 如果以太坊是一台计算机,那么每次这些更新都可以看作是一次操作系统(OS)的升级,类似Google的安卓系统升级或苹果的iOS系列,而以太坊则将分四个阶段发布它的版本。 14 | 这四个阶段以太坊都会增加新功能,并提高平台的用户友好度和系统安全性,同时也会提高以太坊的扩展性。 15 | 16 | ## 四阶段 17 | 18 | 第一阶段,边境(Frontier )(2015年7月):以太坊的第一次版本发布,允许开发人员对以太坊进行挖矿,并基于以太坊进行dAPP与工具软件的开发。 19 | 20 | 第二阶段,家园(Homestead)(2016年3月):发布了第一个生产环境版本,对许多协议进行了优化改进,为之后的升级奠定了基础,并且加快了交易速度。 21 | 22 | 第三阶段,大都会(Metropolis)(2017年10月):第三阶段分为两个版本,分别命名为拜占庭(2017年10月)和君士坦丁堡(时间待定,预计2018年),将会使得以太坊更轻量、更快速、更安全。 23 | 24 | 第四阶段,宁静(Serenity)(时间待定):这个版本将会使用期待已久的持有量证明(PoS),其中将会使用Casper共识算法。 25 | 26 | 所有这些更新将有助于以太坊实现更大的规模化,也意味着更快的交易速度和更低的费用。如我们所见的那样,以太坊团队在交易扩展方面做得非常不错。 27 | 28 | ## 阶段历史 29 | 30 | ### 奥林匹克(Olympic) |2015 年 5 月 9 日 31 | 32 | 以太坊区块链于 2015 年 7 月正式向用户开放使用。以太坊在此之前开放了九个版本的开放测试网络以进行概念证明,其中最后一个版本便是奥林匹克,供开发人员提前探索以太网区块链开放以后的运作方式。Vitalik 曾宣布向耗费时间精力对以太坊网络进行压力测试的开发人员提供总额为 25,000 ETH 的奖励。测试要求很明确:尝试使网络过载,并对网络状态进行极限测试,以便深入了解协议如何处理流量巨大的情况。开发人员需要对四个方面进行测试:交易活动、虚拟机使用、挖矿方式和惩罚机制。 33 | 34 | ### 边疆(Frontier) | 2015 年 7 月 30 日 35 | 36 | 经过几个月的压力测试,以太坊网络已准备好发布官方公共主网。7 月 20 日,以太坊的创世区块产生,社区开始逐渐壮大。在 Frontier 发布前几个月,Vinay Gupta 发表了关于以太坊开发过程的说明。该说明的大部分内容虽然十分令人振奋,但同时也发出了对潜在用户的警示。Gupta 表示,Frontier 是 “处于最初始形态” 的以太坊版本,开发者应该谨慎行事。Frontier 发布前几天,Stephen Taul 对开发者作出了与 Gupta 类似的提醒:“目前的开发者就如同美国边疆扩张时期的拓荒者一般,他们和自己的同伴在开辟新家园时将获得无穷的机会,但同时也将面临许多危险。” 37 | 38 | ### 家园(Homestead) |2016 年 3 月 14 日 39 | 40 | “家园” 是以太坊网络的首次硬分叉计划,于 2016 年 3 月 14 日发生在第 1,150,000 个区块上。总的来说,“家园” 版本主要为以太坊带来了三大主要更新。第一,取消了金丝雀合约功能,去除了网络中的中心化成分。第二,在以太坊编程语言 Solidity 中引入了新代码。第三,上线 Mist 钱包,使用户能够持有或交易 ETH、编写或部署智能合约。 41 | 42 | ### 大都会(Metropolis):拜占庭硬分叉(Byzantium) | 2017 年 10 月 16 日 43 | 44 | 第三阶段分为两个版本,分别命名为拜占庭(Byzantium)和君士坦丁堡(Constantinople,将会使得以太坊更轻量、更快速、更安全。拜占庭于 2017 年在第 4,370,000 个区块上激活。 45 | 46 | ### 君士坦丁堡(Constantinople)硬分叉 |2019 年 2 月 28 日 47 | 48 | “大都会” 升级的第二阶段被称作 “君士坦丁堡”,计划于 2019 年 1 月中旬在第 7,080,000 个区块上执行。1 月 15 日,一家名为 ChainSecurity 的独立安全审计公司发布了一份报告,该报告指出五大主要系统升级其中之一可能会使攻击者有机可乘,以窃取资金。针对该报告,以太坊核心开发者和社区其他成员投票决定推迟升级,直到该安全漏洞得以修复。当月末,以太坊核心开发者宣布升级将于第 7,280,000 个区块上进行。2 月 28 日,区块高度达到 7,280,000,君士坦丁堡硬分叉升级如期执行。 49 | 50 | ## 当前阶段 51 | 52 | 以太坊于今年二月完成了君士坦丁堡(Constantinople)升级,不久后又将迎来伊斯坦布尔(Istanbul)硬分叉。这意味以太坊社区距 Serenity 将更近一步。Serenity 作为以太坊升级的最后一次迭代,其重要性不言自明。2018 年,Vitalik 在 Devcon 上详细阐释了 Serenity 将分成多个阶段进行,并且每个阶段预计间隔一年。 53 | 54 | 放眼未来,“宁静”(Serenity) 是以太坊区块链的终极目的地,但在这之前还将经历伊斯坦布尔硬分叉和 “以太坊 1.x” 阶段。伊斯坦布尔硬分叉将主要由围绕着 ProgPoW (Programmatic Proof-of-Work) 共识算法展开。“宁静”(Serenity) 的主要内容包括从工作量证明 (PoW) 到权益证明 (PoS) 的完全转变,同时也将完成其他重要的升级:引入信标链 (beacon chain)、分片 (sharding) 概念;以及用 eWASM (Ethereum-flavored Web Assembly) 替代以太坊虚拟机 (EVM)。Serenity 的所有升级都将分阶段实现,在此期间,以太坊 1.x 也将持续得到完善,以确保原始 PoW 链的延续。 55 | 56 | 57 | 宁静版将在以太坊 2.0 中完成,具体见[以太坊 2.0 的开发路线图]({{}})。 58 | 59 | > 文章修改自:https://learnblockchain.cn/2019/06/15/eth-history1 -------------------------------------------------------------------------------- /content/roadmap/路线图2.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "以太坊2.0路线图" 3 | date: 2019-10-21T05:22:51+08:00 4 | weight: 5002 5 | menu: 6 | docs: 7 | name: "路线图2.0" 8 | parent: "roadmap" 9 | --- 10 | 11 | 以太坊 2.0,也就是大家所熟知的宁静(Serenity)阶段,秉承着五个设计原则:简洁性、强韧性、持久性、安全性、去中心化。之所以要采用循序渐进的方式实现静(Serenity),是为了实现以上所有原则,从而进一步将以太坊打造成区块链解决方案的市场领军者。 12 | 13 | ## 第一步:伊斯坦布尔 14 | 在正式开启 Serenity 之前,以太坊需要执行伊斯坦布尔硬分叉,这是继今年 2 月君士坦丁堡升级后的最后一次计划内硬分叉。此次伊斯坦布尔硬分叉预期将于 2019 年 10 月进行,该分叉目前包含 11 个 EIPs,其中之一就是 EIP 1057 [ProgPoW]。 15 | 16 | ProgPoW (Programmatic Proof-of-Work) 的相关讨论已经在以太坊社区中持续了一段时间。此 EIP 建议将协议中的挖矿算法切换为 ProgPoW,由于 ASIC 挖矿效率明显优于 GPU,该算法旨在削弱 ASIC 的挖矿优势。ASIC(专用集成电路)和 GPU(图形处理器,即显卡)都是可用于加密货币挖矿的硬件设备。ASIC 是高度专业化的硬件,使用 ASIC 通常可以更高效地进行挖矿作业,从而产生更可观的收益。然而,ASIC 的专用性极高,这就意味着用来进行比特币挖矿的 ASIC 适用于比特币区块链,而进行以太币挖矿的 ASIC 仅适用于以太坊区块链。虽然效率较高,但 ASIC 的成本高昂且难以获取,如此一来就可能会导致中心化风险:矿池将被掌控在有能力获取 ASIC 的矿工手上(这也是长期争论不休的话题)。相比之下,GPU 作为通用计算工具也可用于解决许多用例的复杂运算。较之 ASIC,GPU 可用来对任何加密货币进行挖矿,并且易于获得,使用广泛。然而,也因为 GPU 不具有类似 ASIC 的专用算力,其效率和收益远低于 ASIC。一旦 EIP 1057 被通过,使用抗 ASIC 的 ProgPoW 算法将使得 ASIC 和 GPU 在进行 ETH 挖矿时具有同等效率,从而确保了网络的去中心化(此说法仍然具有争议)。总的来看,以太坊的核心开发者似乎都是 ProgPoW 的拥趸,但他们在作出最终决策前已经启用了针对该算法的第三方审计措施。 17 | 18 | ### 阶段 0:信标链 (Beacon Chain) | 2019 19 | 预计在 2019 年,Serenity 第一阶段将推出信标链 (Beacon Chain)。信标链是基于权益证明 (Proof of Stake) 的区块链,信标链的部署将标志工作量证明 (PoW) 到权益证明 (PoS) 共识机制的转变。为了确保链的连续性不被破坏,信标链确立之后将与原始的以太坊 PoW 链并行。信标链的最初形态囊括了三个主要职责: 20 | 21 | 管理权益证明 (PoS) 共识机制: 22 | PoS 是这样一种共识机制:通过网络质押 ETH 而非耗费精力挖矿来最终确认新区块的产生。 23 | 24 | 处理区块的交叉联结(CrossLink) 25 | 使得区块交叉联结是信标链能够确定和维护分片链状态的主要方式。分片链将于阶段 1 进行部署,所以此更新是在为阶段 1 做准备。 26 | 27 | 引导达成共识和最终确定性 28 | 信标链通过 PoS 和 Casper FFG 共识机制达成最终确定性。PoS 规定,2/3 的验证者必须在下一个行将产生的区块中质押 ETH,这意味着对于潜在的恶意用户来说,施行不正当行为需要承担的经济风险非常之高。 29 | 30 | ### 阶段 1:分片 (Shard Chains) | 2020 年 31 | 分片链是以太坊网络未来可扩容性的核心特征。从整体概念来看,分片是指:将某数据库(去中心化数据库或其他类型数据库)中许多节点的数据处理职责分割开,允许同时进行交易、存储和信息处理。分片理念与目前的以太坊主链模式完全不同,后者则需要每个全节点对每一笔交易进行处理和验证。 32 | 33 | Serenity 阶段 1 将在分片链上处理最终确定性和共识。此阶段的分片链更倾向于 “测试运行”,而不是可以立即解决扩容问题的方案。信标链将对分片链的执行情况进行监督。验证者质押 32 个 ETH 之后将被随机分配到特定的分片链上进行验证工作(此处的随机性可以确保验证者的分配路径是不可预测的,否则将面临人为操纵的风险)。根据以太坊 2.0 规范,信标链将支持 1024 个分片链,每条分片链上将有 128 个节点进行验证工作。 34 | 35 | ### 阶段 2:eWASM | 2020 或 2021 年 36 | 在阶段 2 中,以太坊 2.0 升级中的重要功能将被聚合起来。随着新虚拟机 eWASM (Ethereum-flavored Web Assembly) 的引入,分片链将从相当基本的数据标记形态演变为功能完整的交易链,从而担当起以太坊网络扩容的重任。 37 | 38 | 为了维护区块链生态系统的正常运行,节点必须在虚拟机中执行交易和智能合约。以太坊 1.0 的虚拟机被称为 EVM (以太坊虚拟机)。切换到以太坊 2.0 和信标链后,以太坊网络的虚拟机将升级为 eWASM,这是一个基于 Web Assembly 的虚拟机,由万维网联盟(W3C)定义为开源标准。由于 WASM 支持多种编码语言,eWASM 使得由任何语言编写的智能合约都能在以太坊上运行,而现有的 EVM 只允许由 Solidity 语言编写的智能合约。 39 | 40 | ### “以太坊 1.x” 41 | 我们需要注意的是,在上文提到的 Serenity 阶段 0、1、2 中,原有的以太坊 PoW 链并不会消失。它将继续得到维护并且与信标链并行,原始 PoW 链上的矿工仍然能通过传统的挖矿方式获得 ETH 奖励。随着生态系统逐渐转移到信标链,PoW 链可能面临淘汰(有人提议永远保留 PoW 链),前提是 “难度炸弹” 机制使得 PoW 运算的难度系数几近于不可能。在信标链测试和概念验证期间,原有的以太坊 1.0 链没有止步不前,而是不断进行完善。这一系列升级和硬分叉就被称作 “以太坊 1.x”,旨在使当前的以太坊主链持续迭代,以满足信标链部署期间生态系统的需求和应用。 42 | 43 | 以太坊 1.x 背后的团队仍处于路线图规划的早期阶段,但他们已经确立了以太坊 1.x 升级的三个总目标: 44 | 45 | 通过提高 tx/s 吞吐量促进主网扩容(优化客户端将大大提高每个区块的 gas 上限) 46 | 收取 “状态费用” 以限制磁盘空间使用量,从而可以持续运行全节点 47 | 升级虚拟机以改善开发人员体验。虚拟机升级包括 eWASM 和交易模式的改变,新交易模式可以使整体交易费用更加稳定。 48 | 开发最终确定性工具,利用信标链对以太坊 1.x 中的区块进行最终确定,从而连接以太坊 1.0 和 2.0 版本。 49 | 跟进以太坊 1.x 的升级更新及其团队动向可以前往:链接 1 及 链接 2 。 50 | 51 | ### 阶段 3:后续升级 | 2022 52 | 阶段 2 之后,以太坊的发展时间线就没那么明晰了。这也是情理之中的事,因为区块链技术的发展日新月异,开发人员需要继续致力于解决问题、改进协议才能满足不断增长的需求。仍处于讨论阶段的后续升级包括:轻客户端状态协议、主链安全性耦合以及超二次或指数性分片。若以太坊 2.0 进展顺利,以太坊也将顺势循次而进,届时 “以太坊 3.0” 或将成为下一片新大陆。 53 | 54 | > 文章来源: https://learnblockchain.cn/2019/06/15/eth-serenity/ -------------------------------------------------------------------------------- /deploy_key.enc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lbc-team/ethereum_wiki_cn/acce9cf94864eff9b9dc9196f3fefe896184d76b/deploy_key.enc -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "etheraction", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "ansi-regex": { 8 | "version": "2.1.1", 9 | "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz?cache=0&sync_timestamp=1570188663907&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-regex%2Fdownload%2Fansi-regex-2.1.1.tgz", 10 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 11 | "dev": true 12 | }, 13 | "ansi-styles": { 14 | "version": "2.2.1", 15 | "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-2.2.1.tgz", 16 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 17 | "dev": true 18 | }, 19 | "chalk": { 20 | "version": "1.1.3", 21 | "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz?cache=0&sync_timestamp=1573282918610&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-1.1.3.tgz", 22 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 23 | "dev": true, 24 | "requires": { 25 | "ansi-styles": "^2.2.1", 26 | "escape-string-regexp": "^1.0.2", 27 | "has-ansi": "^2.0.0", 28 | "strip-ansi": "^3.0.0", 29 | "supports-color": "^2.0.0" 30 | } 31 | }, 32 | "date-time": { 33 | "version": "1.1.0", 34 | "resolved": "https://registry.npm.taobao.org/date-time/download/date-time-1.1.0.tgz", 35 | "integrity": "sha1-GIdtC9pMGf5w3Tv0sDTygbEqQLY=", 36 | "dev": true, 37 | "requires": { 38 | "time-zone": "^0.1.0" 39 | } 40 | }, 41 | "escape-string-regexp": { 42 | "version": "1.0.5", 43 | "resolved": "http://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz", 44 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 45 | "dev": true 46 | }, 47 | "figures": { 48 | "version": "1.7.0", 49 | "resolved": "https://registry.npm.taobao.org/figures/download/figures-1.7.0.tgz?cache=0&sync_timestamp=1571715625804&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffigures%2Fdownload%2Ffigures-1.7.0.tgz", 50 | "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", 51 | "dev": true, 52 | "requires": { 53 | "escape-string-regexp": "^1.0.5", 54 | "object-assign": "^4.1.0" 55 | } 56 | }, 57 | "has-ansi": { 58 | "version": "2.0.0", 59 | "resolved": "https://registry.npm.taobao.org/has-ansi/download/has-ansi-2.0.0.tgz?cache=0&sync_timestamp=1568144533484&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhas-ansi%2Fdownload%2Fhas-ansi-2.0.0.tgz", 60 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 61 | "dev": true, 62 | "requires": { 63 | "ansi-regex": "^2.0.0" 64 | } 65 | }, 66 | "hooker": { 67 | "version": "0.2.3", 68 | "resolved": "http://registry.npm.taobao.org/hooker/download/hooker-0.2.3.tgz", 69 | "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=", 70 | "dev": true 71 | }, 72 | "is-finite": { 73 | "version": "1.0.2", 74 | "resolved": "http://registry.npm.taobao.org/is-finite/download/is-finite-1.0.2.tgz", 75 | "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", 76 | "dev": true, 77 | "requires": { 78 | "number-is-nan": "^1.0.0" 79 | } 80 | }, 81 | "number-is-nan": { 82 | "version": "1.0.1", 83 | "resolved": "http://registry.npm.taobao.org/number-is-nan/download/number-is-nan-1.0.1.tgz", 84 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", 85 | "dev": true 86 | }, 87 | "object-assign": { 88 | "version": "4.1.1", 89 | "resolved": "http://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz", 90 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 91 | "dev": true 92 | }, 93 | "parse-ms": { 94 | "version": "1.0.1", 95 | "resolved": "https://registry.npm.taobao.org/parse-ms/download/parse-ms-1.0.1.tgz", 96 | "integrity": "sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0=", 97 | "dev": true 98 | }, 99 | "plur": { 100 | "version": "1.0.0", 101 | "resolved": "https://registry.npm.taobao.org/plur/download/plur-1.0.0.tgz", 102 | "integrity": "sha1-24XGgU9eXlo7Se/CjWBP7GKXUVY=", 103 | "dev": true 104 | }, 105 | "pretty-ms": { 106 | "version": "2.1.0", 107 | "resolved": "https://registry.npm.taobao.org/pretty-ms/download/pretty-ms-2.1.0.tgz", 108 | "integrity": "sha1-QlfCVt8/sLRR1q/6qwIYhBJpgdw=", 109 | "dev": true, 110 | "requires": { 111 | "is-finite": "^1.0.1", 112 | "parse-ms": "^1.0.0", 113 | "plur": "^1.0.0" 114 | } 115 | }, 116 | "strip-ansi": { 117 | "version": "3.0.1", 118 | "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz?cache=0&sync_timestamp=1573280518303&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-3.0.1.tgz", 119 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 120 | "dev": true, 121 | "requires": { 122 | "ansi-regex": "^2.0.0" 123 | } 124 | }, 125 | "supports-color": { 126 | "version": "2.0.0", 127 | "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-2.0.0.tgz", 128 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 129 | "dev": true 130 | }, 131 | "text-table": { 132 | "version": "0.2.0", 133 | "resolved": "http://registry.npm.taobao.org/text-table/download/text-table-0.2.0.tgz", 134 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 135 | "dev": true 136 | }, 137 | "time-grunt": { 138 | "version": "2.0.0", 139 | "resolved": "https://registry.npm.taobao.org/time-grunt/download/time-grunt-2.0.0.tgz", 140 | "integrity": "sha1-20GFP5K4ebL17DNzGviFtFGADsk=", 141 | "dev": true, 142 | "requires": { 143 | "chalk": "^1.0.0", 144 | "date-time": "^1.1.0", 145 | "figures": "^1.0.0", 146 | "hooker": "^0.2.3", 147 | "number-is-nan": "^1.0.0", 148 | "pretty-ms": "^2.1.0", 149 | "text-table": "^0.2.0" 150 | } 151 | }, 152 | "time-zone": { 153 | "version": "0.1.0", 154 | "resolved": "https://registry.npm.taobao.org/time-zone/download/time-zone-0.1.0.tgz", 155 | "integrity": "sha1-Sncotqwo2w4Aj1FAQ/1VW9VXO0Y=", 156 | "dev": true 157 | } 158 | } 159 | } 160 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "EthereumBaike", 3 | "version": "1.0.0", 4 | "description": "ethereum baike document build", 5 | "main": "index.js", 6 | "repository": { 7 | "type": "git", 8 | "url": "git+https://github.com/lbc-team/ethereum_wiki_cn.git" 9 | }, 10 | "keywords": [ 11 | "demo" 12 | ], 13 | "author": "ysqi", 14 | "bugs": { 15 | "url": "hhttps://github.com/lbc-team/ethereum_wiki_cn/issues" 16 | }, 17 | "homepage": "hhttps://github.com/lbc-team/ethereum_wiki_cn#readme", 18 | "scripts": { 19 | "test": "grunt test" 20 | }, 21 | "devDependencies": { 22 | "grunt": "~0.4.2", 23 | "grunt-cli": "~0.1.0", 24 | "grunt-contrib-clean": "~0.5.0", 25 | "grunt-contrib-cssmin": "^1.0.2", 26 | "grunt-contrib-htmlmin": "^2.0.0", 27 | "grunt-contrib-jshint": "~0.7.2", 28 | "grunt-exec": "^1.0.1", 29 | "time-grunt": "^2.0.0" 30 | }, 31 | "peerDependencies": { 32 | "grunt": "~0.4.1" 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /site/archetypes/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "{{ replace .TranslationBaseName "-" " " | title }}" 3 | date: {{ .Date }} 4 | weight: 5001 5 | menu: 6 | docs: 7 | name: "{{.TranslationBaseName}}" 8 | parent: "dev" 9 | identifier: "" 10 | --- 11 | 12 | 13 | {{}} 14 | 马上就会编辑 15 | {{}} -------------------------------------------------------------------------------- /site/data/contributor.yaml: -------------------------------------------------------------------------------- 1 | devysq@gmail.com: 2 | name: 虞双齐 3 | site: https://yushuangqi.com 4 | -------------------------------------------------------------------------------- /site/static/CNAME: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lbc-team/ethereum_wiki_cn/acce9cf94864eff9b9dc9196f3fefe896184d76b/site/static/CNAME -------------------------------------------------------------------------------- /site/static/images/app-icon128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lbc-team/ethereum_wiki_cn/acce9cf94864eff9b9dc9196f3fefe896184d76b/site/static/images/app-icon128x128.png -------------------------------------------------------------------------------- /site/static/images/app-icon64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lbc-team/ethereum_wiki_cn/acce9cf94864eff9b9dc9196f3fefe896184d76b/site/static/images/app-icon64x64.png -------------------------------------------------------------------------------- /site/static/images/content/20181028155558.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lbc-team/ethereum_wiki_cn/acce9cf94864eff9b9dc9196f3fefe896184d76b/site/static/images/content/20181028155558.jpg -------------------------------------------------------------------------------- /site/static/images/content/20181028221834.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lbc-team/ethereum_wiki_cn/acce9cf94864eff9b9dc9196f3fefe896184d76b/site/static/images/content/20181028221834.jpg -------------------------------------------------------------------------------- /site/static/images/content/20181114-212803@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lbc-team/ethereum_wiki_cn/acce9cf94864eff9b9dc9196f3fefe896184d76b/site/static/images/content/20181114-212803@2x.png -------------------------------------------------------------------------------- /site/static/images/content/20181114-214238@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lbc-team/ethereum_wiki_cn/acce9cf94864eff9b9dc9196f3fefe896184d76b/site/static/images/content/20181114-214238@2x.png -------------------------------------------------------------------------------- /site/static/images/content/27123601.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lbc-team/ethereum_wiki_cn/acce9cf94864eff9b9dc9196f3fefe896184d76b/site/static/images/content/27123601.png -------------------------------------------------------------------------------- /site/static/images/content/28423175.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lbc-team/ethereum_wiki_cn/acce9cf94864eff9b9dc9196f3fefe896184d76b/site/static/images/content/28423175.png -------------------------------------------------------------------------------- /site/static/images/content/Blockchain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lbc-team/ethereum_wiki_cn/acce9cf94864eff9b9dc9196f3fefe896184d76b/site/static/images/content/Blockchain.png -------------------------------------------------------------------------------- /site/static/images/content/ethereum-home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lbc-team/ethereum_wiki_cn/acce9cf94864eff9b9dc9196f3fefe896184d76b/site/static/images/content/ethereum-home.png -------------------------------------------------------------------------------- /site/static/images/ethereum.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lbc-team/ethereum_wiki_cn/acce9cf94864eff9b9dc9196f3fefe896184d76b/site/static/images/ethereum.jpeg -------------------------------------------------------------------------------- /site/static/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lbc-team/ethereum_wiki_cn/acce9cf94864eff9b9dc9196f3fefe896184d76b/site/static/images/favicon.ico -------------------------------------------------------------------------------- /site/static/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lbc-team/ethereum_wiki_cn/acce9cf94864eff9b9dc9196f3fefe896184d76b/site/static/images/logo.png -------------------------------------------------------------------------------- /site/static/main.css: -------------------------------------------------------------------------------- 1 | /* 底部备注字体不需要同文章内容大小 */ 2 | .footnotes,.footcommits{font-size: 1rem;} 3 | .footcommits,.footcommits a{ 4 | color: #8a8a8a; 5 | } 6 | 7 | 8 | .md-typeset img { 9 | max-width: 100%; 10 | text-indent: 0; 11 | } 12 | 13 | .bg-llight { 14 | background-color: #f2f2f5; 15 | } 16 | .bg-white { 17 | background-color: #fff; 18 | } 19 | 20 | .post { 21 | padding: 1.2em 2em; 22 | } 23 | .post p img{ 24 | margin-left: auto; 25 | margin-right:auto; 26 | display:block; 27 | } 28 | @media only screen and (max-width: 44.9375em) { 29 | .post { 30 | padding: 1.2em 0.2em; 31 | } 32 | .post-meta{ 33 | display: none; 34 | } 35 | } 36 | .post .post-header { 37 | margin-bottom: 20px; 38 | text-align: center; 39 | padding-bottom: 10px; 40 | border-bottom: 2px solid #d3d3d3 41 | } 42 | 43 | .post .post-header .post-title { 44 | margin: 0; 45 | font-size: 1.8em; 46 | font-weight: 400 47 | } 48 | 49 | .post .post-header .post-link { 50 | display: inline-block; 51 | position: relative; 52 | color: black; 53 | } 54 | 55 | .post .post-header .post-link:before { 56 | position: absolute; 57 | left: 51%; 58 | right: 51% 59 | } 60 | 61 | .post .post-header .post-meta .more-meta:before,.post .post-header .post-meta .post-category a:before { 62 | content: "\B7" 63 | } 64 | 65 | .post .post-header .post-link.active:before,.post .post-header .post-link:active:before,.post .post-header .post-link:focus:before,.post .post-header .post-link:hover:before { 66 | right: 0; 67 | left: 0 68 | } 69 | 70 | .post .post-header .post-meta { 71 | font-size: 14px; 72 | color: #8a8a8a; 73 | text-align: right; 74 | } 75 | 76 | .post .post-header .post-meta .post-time { 77 | font-size: 15px 78 | } 79 | 80 | .post .post-header .post-meta .post-category { 81 | display: inline 82 | } 83 | 84 | .post .post-header .post-meta .post-category a { 85 | color: inherit 86 | } 87 | 88 | .post .post-header .post-meta .post-category a:hover { 89 | color: #c05b4d 90 | } 91 | -------------------------------------------------------------------------------- /site/themes/material/CHANGELOG.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lbc-team/ethereum_wiki_cn/acce9cf94864eff9b9dc9196f3fefe896184d76b/site/themes/material/CHANGELOG.md -------------------------------------------------------------------------------- /site/themes/material/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 YuShuangqi 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /site/themes/material/LICENSE.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lbc-team/ethereum_wiki_cn/acce9cf94864eff9b9dc9196f3fefe896184d76b/site/themes/material/LICENSE.md -------------------------------------------------------------------------------- /site/themes/material/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lbc-team/ethereum_wiki_cn/acce9cf94864eff9b9dc9196f3fefe896184d76b/site/themes/material/README.md -------------------------------------------------------------------------------- /site/themes/material/archetypes/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | --- -------------------------------------------------------------------------------- /site/themes/material/layouts/404.html: -------------------------------------------------------------------------------- 1 | {{ partial "head" . }} {{ partial "bar" . }} 2 | 3 |
4 | {{ partial "header" . }} 5 |
6 | 7 |
8 | {{ partial "hero" . }} {{ partial "tab" . }} 9 |
10 |
11 |
12 |
13 |
14 | 15 |
16 |
17 |
18 |
19 |
20 |
21 | 22 |
23 |
24 |
25 |
26 |

404 - Not found

27 |
28 |
29 |
30 | {{ partial "footer" . }} 31 |
32 | {{ partial "footer_js" . }} -------------------------------------------------------------------------------- /site/themes/material/layouts/_default/list.html: -------------------------------------------------------------------------------- 1 | {{ partial "head" . }} {{ partial "bar" . }} 2 | 3 |
4 | {{ partial "header" . }} 5 |
6 | 7 |
8 | {{ partial "hero" . }} {{ partial "tab" . }} 9 |
10 |
11 |
12 |
13 |
14 | {{ partial "nav" . }} 15 |
16 |
17 |
18 |
19 |
20 |
21 | {{ partial "toc" . }} 22 |
23 |
24 |
25 |
26 | {{ partial "body" . }} 27 |
28 |
29 |
30 | {{ partial "footer" . }} 31 |
32 | {{ partial "footer_js" . }} -------------------------------------------------------------------------------- /site/themes/material/layouts/_default/single.html: -------------------------------------------------------------------------------- 1 | {{ partial "head" . }} {{ partial "bar" . }} 2 | 3 |
4 | {{ partial "header" . }} 5 |
6 | 7 |
8 | {{ partial "hero" . }} {{ partial "tab" . }} 9 |
10 |
11 |
12 |
13 |
14 | {{ partial "nav" . }} 15 |
16 |
17 |
18 |
19 |
20 |
21 | {{ partial "toc" . }} 22 |
23 |
24 |
25 |
26 | {{ partial "body" . }} 27 |
28 |
29 |
30 | {{ partial "footer" . }} 31 |
32 | {{ partial "footer_js" . }} -------------------------------------------------------------------------------- /site/themes/material/layouts/index.html: -------------------------------------------------------------------------------- 1 | {{ partial "head" . }} {{ partial "bar" . }} 2 | 3 |
4 | {{ partial "header" . }} 5 |
6 | 7 |
8 | {{ partial "hero" . }} {{ partial "tab" . }} 9 |
10 |
11 |
12 |
13 |
14 | {{ partial "nav" . }} 15 |
16 |
17 |
18 |
19 |
20 |
21 | {{ partial "toc" . }} 22 |
23 |
24 |
25 |
26 | {{ partial "body" . }} 27 |
28 |
29 |
30 | {{ partial "footer" . }} 31 |
32 | {{ partial "footer_js" . }} -------------------------------------------------------------------------------- /site/themes/material/layouts/partials/bar.html: -------------------------------------------------------------------------------- 1 | 2 | {{if eq "github" ($.Scratch.Get "platfrom") }} 3 | 4 | {{end}} 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | Skip to content 16 | 17 | -------------------------------------------------------------------------------- /site/themes/material/layouts/partials/body.html: -------------------------------------------------------------------------------- 1 |
2 | {{ with $.Page.File }} 3 | 4 | {{end}} 5 |
6 |

7 | 8 | {{ .Title }} {{ if .Draft }} (Draft){{ end }} 9 |

10 | 13 |
14 | 15 | 16 | 17 | {{ (replace .Content "
20 |
21 |

文章列表

22 | {{if .Data.Pages}} 23 |
    24 | {{ range .Data.Pages.ByWeight }} 25 |
  • 26 | {{.Title}} 27 |
  • 28 | {{ end }} 29 |
30 | {{end}} 31 |
32 | {{end}} 33 |
34 |
35 |
    36 |
  1. 37 | 38 | {{ $repo_type := $.Scratch.Get "platfrom" }} 39 | 最后更新时间:{{.Lastmod.Format "2006-01-02 15:04:05"}},这是一篇任何人都可以协作参与的文章, 40 | 41 | 点击反馈问题。 42 |
  2. 43 | {{with .Site.Data.commits}} 44 | {{range index . (print "./content/" $.Page.File.Path) }} 45 |
  3. 46 | {{dateFormat "2006-01-02" .date}} 47 | 48 | {{if index $.Site.Data.contributor .email}} 49 | {{with index $.Site.Data.contributor .email }} 50 | {{.name}} 51 | {{end}} 52 | {{else}} 53 | {{.email}} 54 | {{end}} 55 | 56 | 提交修改-Commit:{{substr .hash 0 7}} 57 | ->{{.message}} 58 |
  4. 59 | {{end}} 60 | {{end}} 61 |
62 |
63 |

64 |

65 |
66 |
67 | {{if $.Site.Params.theme.future.disqus }} 68 |

comments

69 | {{end}} 70 |
-------------------------------------------------------------------------------- /site/themes/material/layouts/partials/footer.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 75 | 76 | -------------------------------------------------------------------------------- /site/themes/material/layouts/partials/footer_js.html: -------------------------------------------------------------------------------- 1 | 10 | 11 | 23 | 24 | 25 | {{ range .Site.Params.custom_js }} 26 | 27 | {{ end }} 28 | 29 | 30 | {{ with .Site.GoogleAnalytics }} 31 | 62 | {{ end }} 63 | 66 | 67 | 68 | {{if .Params.mathjax}} 69 | /* https://www.mathjax.org */ 70 | 82 | 83 | {{end}} 84 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /site/themes/material/layouts/partials/head.html: -------------------------------------------------------------------------------- 1 | 2 | {{ $platform := $.Site.Params.repo_url}} 3 | {{if in $platform "github" }} 4 | {{ $.Scratch.Add "platfrom" "github" }} 5 | {{else if in $platform "gitlab" }} 6 | {{ $.Scratch.Add "platfrom" "gitlab" }} 7 | {{else if in $platform "bitbucket" }} 8 | {{ $.Scratch.Add "platfrom" "bitbucket" }} 9 | {{else if in $platform "gitee" }} 10 | {{ $.Scratch.Add "platfrom" "gitee" }} 11 | {{end}} 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | {{ .Title }}{{ if not .IsHome }} - {{ .Site.Title }}{{ end }} 25 | {{ if .Description }} 26 | 27 | {{else }} 28 | 29 | {{end}} 30 | 31 | {{ with .Site.Params.author }} 32 | 33 | {{ end }} 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | {{ with .Site.Title }}{{ end }} 51 | {{ with .Site.Params.logo }}{{ end }} 52 | {{ with .Site.Title }}{{ end }} 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 89 | 90 | 91 | 92 | 93 | 94 | {{/* set default values if no custom ones are defined */}} 95 | {{ $text := or .Site.Params.font.text "Roboto" }} 96 | {{ $code := or .Site.Params.font.code "Roboto Mono" }} 97 | {{if .Site.Params.font.useimage}} 98 | 99 | {{else}} 100 | 101 | {{end}} 102 | 110 | 111 | {{if $.Site.Params.cnzz.enable}} 112 | 113 | {{end}} 114 | 115 | {{ range .Site.Params.custom_css }} 116 | 117 | {{ end }} 118 | 119 | 120 | {{ with .OutputFormats.Get "RSS" }} 121 | 122 | 123 | {{ end }} 124 | 125 | 126 | {{if or .Site.Params.palette.primary .Site.Params.palette.accent }} 127 | 128 | {{else}} 129 | 130 | {{end}} -------------------------------------------------------------------------------- /site/themes/material/layouts/partials/header.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /site/themes/material/layouts/partials/hero.html: -------------------------------------------------------------------------------- 1 | {{with .Params.hero}} 2 | {{$class :="md-hero"}} 3 | {{if $.Site.Params.theme.feature.tabs}} 4 | {{$class:="md-hero md-hero--expand"}} 5 | {{end}} 6 |
7 |
8 | {{.}} 9 |
10 |
11 | {{end}} -------------------------------------------------------------------------------- /site/themes/material/layouts/partials/nav.html: -------------------------------------------------------------------------------- 1 | {{ $currentNode := . }} 2 | {{ $.Scratch.Set "currentMenuEntry" . }} 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /site/themes/material/layouts/partials/nav_item.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{ $nav_item := .Scratch.Get "nav" }} 4 | {{ $level := .Scratch.Get "nav_level"}} 5 | {{ $path := .Scratch.Get "nav_path"}} 6 | {{ $isCurrent := eq .Permalink ($nav_item.URL | absURL | printf "%s") }} 7 | 8 | 9 | {{with $nav_item}} 10 | {{ $isActive :=or ($.IsMenuCurrent "docs" .) ( $.HasMenuCurrent "docs" .)}} 11 | {{if .HasChildren}} 12 |
  • 13 | 14 | 16 | 17 | 18 | 21 | 36 |
  • 37 | 38 | {{else if $isCurrent}} 39 |
  • 40 | 41 | 43 | 44 | 47 | 48 | 49 | {{.Name }} 50 | 51 |
  • 52 | 53 | 54 | {{else}} 55 |
  • 56 | 57 | {{ .Name }} 58 | 59 |
  • 60 | {{end}} 61 | {{end}} -------------------------------------------------------------------------------- /site/themes/material/layouts/partials/social.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{if $.Site.Params.social }} 4 | 13 | {{end}} -------------------------------------------------------------------------------- /site/themes/material/layouts/partials/source.html: -------------------------------------------------------------------------------- 1 | {{ $repo_type := $.Scratch.Get "platfrom" }} 2 | 3 | {{with $repo_type}} 4 |
    5 | 6 | 7 | 8 |
    9 | {{end}} 10 |
    11 | {{.Site.Params.repo_name}} 12 |
    13 |
    -------------------------------------------------------------------------------- /site/themes/material/layouts/partials/tab.html: -------------------------------------------------------------------------------- 1 | {{ $class := "md-tabs md-tabs--active" }} 2 | 3 | 17 | -------------------------------------------------------------------------------- /site/themes/material/layouts/partials/tab_item.html: -------------------------------------------------------------------------------- 1 | {{ $nav_item := .Scratch.Get "nav" }} 2 | {{ $level := .Scratch.Get "nav_level"}} 3 | {{ $path := .Scratch.Get "nav_path"}} 4 | {{ $class := "md-nav__item" }} 5 | {{ $isCurrent := or ($.IsMenuCurrent "main" $nav_item) ( $.HasMenuCurrent "main" $nav_item) }} 6 | {{ $isHomePage := eq $.Site.BaseURL ($nav_item.URL | absURL | printf "%s")}} 7 | {{if $isCurrent}} 8 | {{ $class := "md-nav__item md-nav__item--active" }} 9 | {{end}} 10 | 11 | {{with $nav_item}} 12 | {{ if $isHomePage}} 13 |
  • 14 | 15 | {{ .Name }} 16 | 17 |
  • 18 | {{else}} 19 |
  • 20 | {{if .URL}} 21 | 22 | {{ .Name }} 23 | 24 | {{else}} 25 | {{ .Name }} 26 | {{end}} 27 |
  • 28 | {{end}} 29 | {{end}} -------------------------------------------------------------------------------- /site/themes/material/layouts/partials/toc.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{ $headers := findRE "(.|\n])+?" .Content }} 4 | 5 | {{ $has_headers := ge (len $headers) 1 }} 6 | {{ if $has_headers }} 7 | 43 | {{end}} 44 | {{end}} 45 | {{else}} 46 |
  • 47 | {{ $header | plainify | htmlEscape }} 48 | {{end}} 49 | {{end}} 50 | 51 | {{ $firstHeaderLevel := len (seq (index (findRE "[1-4]" (index $headers 0) 1) 0)) }} 52 | {{ $lastHeaderLevel := len (seq (index (findRE "[1-4]" (index $headers (sub (len $headers) 1)) 1) 0)) }} 53 | {{ range seq (sub $lastHeaderLevel $firstHeaderLevel) }} 54 |
  • 55 | {{end}} 56 | 57 | 58 | 59 | {{end}} -------------------------------------------------------------------------------- /site/themes/material/layouts/shortcodes/adm.html: -------------------------------------------------------------------------------- 1 |
    2 |

    3 | {{if .Get "title"}}{{ .Get "title" }} 4 | {{else}}{{.Get "type" | title}}{{end}}

    5 |

    {{ printf "%s" .Inner | markdownify }}

    6 |
    -------------------------------------------------------------------------------- /site/themes/material/layouts/shortcodes/img.html: -------------------------------------------------------------------------------- 1 | {{$width := .Get "width"}} 2 | {{$height := .Get "height"}} 3 |
    4 | {{.Get "alt"}} 5 |
    -------------------------------------------------------------------------------- /site/themes/material/layouts/shortcodes/note.html: -------------------------------------------------------------------------------- 1 |
    2 |

    {{ .Get "title" }}

    3 |

    {{ printf "%s" .Inner | markdownify }}

    4 |
    -------------------------------------------------------------------------------- /site/themes/material/layouts/shortcodes/relref.html: -------------------------------------------------------------------------------- 1 | {{- if in (.Get 0) "/_index.md" -}} 2 | {{- $paths := (split (.Get 0) "_index.md") -}} 3 | {{- $pagepath := index $paths 0 -}} 4 | {{- $anchor := index $paths 1 -}} 5 | {{- with .Site.GetPage "section" (trim $pagepath "/") -}} 6 | {{- ( printf "%s%s.html" (trim $pagepath "/") $anchor ) | absURL -}} 7 | {{- end -}} 8 | {{- else -}} 9 | {{- with .Site.GetPage "section" (.Get 0) }} 10 | {{- .URL -}} 11 | {{- else -}} 12 | {{- .Get 0 | relref .Page -}} 13 | {{- end -}} 14 | {{- end -}} -------------------------------------------------------------------------------- /site/themes/material/layouts/shortcodes/warning.html: -------------------------------------------------------------------------------- 1 |
    2 |

    {{ .Get "title" }}

    3 |

    {{ printf "%s" .Inner | markdownify }}

    4 |
    -------------------------------------------------------------------------------- /site/themes/material/static/fonts/icon.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lbc-team/ethereum_wiki_cn/acce9cf94864eff9b9dc9196f3fefe896184d76b/site/themes/material/static/fonts/icon.eot -------------------------------------------------------------------------------- /site/themes/material/static/fonts/icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Generated by IcoMoon 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /site/themes/material/static/fonts/icon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lbc-team/ethereum_wiki_cn/acce9cf94864eff9b9dc9196f3fefe896184d76b/site/themes/material/static/fonts/icon.ttf -------------------------------------------------------------------------------- /site/themes/material/static/fonts/icon.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lbc-team/ethereum_wiki_cn/acce9cf94864eff9b9dc9196f3fefe896184d76b/site/themes/material/static/fonts/icon.woff -------------------------------------------------------------------------------- /site/themes/material/static/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lbc-team/ethereum_wiki_cn/acce9cf94864eff9b9dc9196f3fefe896184d76b/site/themes/material/static/images/favicon.png -------------------------------------------------------------------------------- /site/themes/material/static/images/icons/bitbucket.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /site/themes/material/static/images/icons/github.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /site/themes/material/static/images/icons/gitlab.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /site/themes/material/static/javascripts/lunr/lunr.da.js: -------------------------------------------------------------------------------- 1 | !function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.da=function(){this.pipeline.reset(),this.pipeline.add(e.da.trimmer,e.da.stopWordFilter,e.da.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.da.stemmer))},e.da.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.da.trimmer=e.trimmerSupport.generateTrimmer(e.da.wordCharacters),e.Pipeline.registerFunction(e.da.trimmer,"trimmer-da"),e.da.stemmer=function(){var r=e.stemmerSupport.Among,i=e.stemmerSupport.SnowballProgram,n=new function(){function e(){var e,r=l.limit-l.cursor;l.cursor>=t&&(e=l.limit_backward,l.limit_backward=t,l.ket=l.cursor,l.find_among_b(a,4)?(l.bra=l.cursor,l.limit_backward=e,l.cursor=l.limit-r,l.cursor>l.limit_backward&&(l.cursor--,l.bra=l.cursor,l.slice_del())):l.limit_backward=e)}var n,t,s,o=[new r("hed",-1,1),new r("ethed",0,1),new r("ered",-1,1),new r("e",-1,1),new r("erede",3,1),new r("ende",3,1),new r("erende",5,1),new r("ene",3,1),new r("erne",3,1),new r("ere",3,1),new r("en",-1,1),new r("heden",10,1),new r("eren",10,1),new r("er",-1,1),new r("heder",13,1),new r("erer",13,1),new r("s",-1,2),new r("heds",16,1),new r("es",16,1),new r("endes",18,1),new r("erendes",19,1),new r("enes",18,1),new r("ernes",18,1),new r("eres",18,1),new r("ens",16,1),new r("hedens",24,1),new r("erens",24,1),new r("ers",16,1),new r("ets",16,1),new r("erets",28,1),new r("et",-1,1),new r("eret",30,1)],a=[new r("gd",-1,-1),new r("dt",-1,-1),new r("gt",-1,-1),new r("kt",-1,-1)],d=[new r("ig",-1,1),new r("lig",0,1),new r("elig",1,1),new r("els",-1,1),new r("løst",-1,2)],u=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128],c=[239,254,42,3,0,0,0,0,0,0,0,0,0,0,0,0,16],l=new i;this.setCurrent=function(e){l.setCurrent(e)},this.getCurrent=function(){return l.getCurrent()},this.stem=function(){var r=l.cursor;return function(){var e,r=l.cursor+3;if(t=l.limit,0<=r&&r<=l.limit){for(n=r;;){if(e=l.cursor,l.in_grouping(u,97,248)){l.cursor=e;break}if(l.cursor=e,e>=l.limit)return;l.cursor++}for(;!l.out_grouping(u,97,248);){if(l.cursor>=l.limit)return;l.cursor++}(t=l.cursor)=t&&(r=l.limit_backward,l.limit_backward=t,l.ket=l.cursor,e=l.find_among_b(o,32),l.limit_backward=r,e))switch(l.bra=l.cursor,e){case 1:l.slice_del();break;case 2:l.in_grouping_b(c,97,229)&&l.slice_del()}}(),l.cursor=l.limit,e(),l.cursor=l.limit,function(){var r,i,n,s=l.limit-l.cursor;if(l.ket=l.cursor,l.eq_s_b(2,"st")&&(l.bra=l.cursor,l.eq_s_b(2,"ig")&&l.slice_del()),l.cursor=l.limit-s,l.cursor>=t&&(i=l.limit_backward,l.limit_backward=t,l.ket=l.cursor,r=l.find_among_b(d,5),l.limit_backward=i,r))switch(l.bra=l.cursor,r){case 1:l.slice_del(),n=l.limit-l.cursor,e(),l.cursor=l.limit-n;break;case 2:l.slice_from("løs")}}(),l.cursor=l.limit,function(){var e;l.cursor>=t&&(e=l.limit_backward,l.limit_backward=t,l.ket=l.cursor,l.out_grouping_b(u,97,248)?(l.bra=l.cursor,s=l.slice_to(s),l.limit_backward=e,l.eq_v_b(s)&&l.slice_del()):l.limit_backward=e)}(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}}(),e.Pipeline.registerFunction(e.da.stemmer,"stemmer-da"),e.da.stopWordFilter=e.generateStopWordFilter("ad af alle alt anden at blev blive bliver da de dem den denne der deres det dette dig din disse dog du efter eller en end er et for fra ham han hans har havde have hende hendes her hos hun hvad hvis hvor i ikke ind jeg jer jo kunne man mange med meget men mig min mine mit mod ned noget nogle nu når og også om op os over på selv sig sin sine sit skal skulle som sådan thi til ud under var vi vil ville vor være været".split(" ")),e.Pipeline.registerFunction(e.da.stopWordFilter,"stopWordFilter-da")}}); -------------------------------------------------------------------------------- /site/themes/material/static/javascripts/lunr/lunr.de.js: -------------------------------------------------------------------------------- 1 | !function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.de=function(){this.pipeline.reset(),this.pipeline.add(e.de.trimmer,e.de.stopWordFilter,e.de.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.de.stemmer))},e.de.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.de.trimmer=e.trimmerSupport.generateTrimmer(e.de.wordCharacters),e.Pipeline.registerFunction(e.de.trimmer,"trimmer-de"),e.de.stemmer=function(){var r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,i=new function(){function e(e,r,n){return!(!_.eq_s(1,e)||(_.ket=_.cursor,!_.in_grouping(w,97,252)))&&(_.slice_from(r),_.cursor=n,!0)}function i(){for(;!_.in_grouping(w,97,252);){if(_.cursor>=_.limit)return!0;_.cursor++}for(;!_.out_grouping(w,97,252);){if(_.cursor>=_.limit)return!0;_.cursor++}return!1}function s(){return u<=_.cursor}function t(){return c<=_.cursor}var o,c,u,a=[new r("",-1,6),new r("U",0,2),new r("Y",0,1),new r("ä",0,3),new r("ö",0,4),new r("ü",0,5)],d=[new r("e",-1,2),new r("em",-1,1),new r("en",-1,2),new r("ern",-1,1),new r("er",-1,1),new r("s",-1,3),new r("es",5,2)],l=[new r("en",-1,1),new r("er",-1,1),new r("st",-1,2),new r("est",2,1)],m=[new r("ig",-1,1),new r("lich",-1,1)],h=[new r("end",-1,1),new r("ig",-1,2),new r("ung",-1,1),new r("lich",-1,3),new r("isch",-1,2),new r("ik",-1,2),new r("heit",-1,3),new r("keit",-1,4)],w=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32,8],f=[117,30,5],b=[117,30,4],_=new n;this.setCurrent=function(e){_.setCurrent(e)},this.getCurrent=function(){return _.getCurrent()},this.stem=function(){var r=_.cursor;return function(){for(var r,n,i,s,t=_.cursor;;)if(r=_.cursor,_.bra=r,_.eq_s(1,"ß"))_.ket=_.cursor,_.slice_from("ss");else{if(r>=_.limit)break;_.cursor=r+1}for(_.cursor=t;;)for(n=_.cursor;;){if(i=_.cursor,_.in_grouping(w,97,252)){if(s=_.cursor,_.bra=s,e("u","U",i))break;if(_.cursor=s,e("y","Y",i))break}if(i>=_.limit)return void(_.cursor=n);_.cursor=i+1}}(),_.cursor=r,function(){u=_.limit,c=u;var e=_.cursor+3;0<=e&&e<=_.limit&&(o=e,i()||((u=_.cursor)=_.limit)return;_.cursor++}}}(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}}(),e.Pipeline.registerFunction(e.de.stemmer,"stemmer-de"),e.de.stopWordFilter=e.generateStopWordFilter("aber alle allem allen aller alles als also am an ander andere anderem anderen anderer anderes anderm andern anderr anders auch auf aus bei bin bis bist da damit dann das dasselbe dazu daß dein deine deinem deinen deiner deines dem demselben den denn denselben der derer derselbe derselben des desselben dessen dich die dies diese dieselbe dieselben diesem diesen dieser dieses dir doch dort du durch ein eine einem einen einer eines einig einige einigem einigen einiger einiges einmal er es etwas euch euer eure eurem euren eurer eures für gegen gewesen hab habe haben hat hatte hatten hier hin hinter ich ihm ihn ihnen ihr ihre ihrem ihren ihrer ihres im in indem ins ist jede jedem jeden jeder jedes jene jenem jenen jener jenes jetzt kann kein keine keinem keinen keiner keines können könnte machen man manche manchem manchen mancher manches mein meine meinem meinen meiner meines mich mir mit muss musste nach nicht nichts noch nun nur ob oder ohne sehr sein seine seinem seinen seiner seines selbst sich sie sind so solche solchem solchen solcher solches soll sollte sondern sonst um und uns unse unsem unsen unser unses unter viel vom von vor war waren warst was weg weil weiter welche welchem welchen welcher welches wenn werde werden wie wieder will wir wird wirst wo wollen wollte während würde würden zu zum zur zwar zwischen über".split(" ")),e.Pipeline.registerFunction(e.de.stopWordFilter,"stopWordFilter-de")}}); -------------------------------------------------------------------------------- /site/themes/material/static/javascripts/lunr/lunr.du.js: -------------------------------------------------------------------------------- 1 | !function(r,e){"function"==typeof define&&define.amd?define(e):"object"==typeof exports?module.exports=e():e()(r.lunr)}(this,function(){return function(r){if(void 0===r)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===r.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");r.du=function(){this.pipeline.reset(),this.pipeline.add(r.du.trimmer,r.du.stopWordFilter,r.du.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(r.du.stemmer))},r.du.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",r.du.trimmer=r.trimmerSupport.generateTrimmer(r.du.wordCharacters),r.Pipeline.registerFunction(r.du.trimmer,"trimmer-du"),r.du.stemmer=function(){var e=r.stemmerSupport.Among,i=r.stemmerSupport.SnowballProgram,n=new function(){function r(r){return v.cursor=r,r>=v.limit||(v.cursor++,!1)}function n(){for(;!v.in_grouping(g,97,232);){if(v.cursor>=v.limit)return!0;v.cursor++}for(;!v.out_grouping(g,97,232);){if(v.cursor>=v.limit)return!0;v.cursor++}return!1}function o(){return l<=v.cursor}function t(){return a<=v.cursor}function s(){var r=v.limit-v.cursor;v.find_among_b(_,3)&&(v.cursor=v.limit-r,v.ket=v.cursor,v.cursor>v.limit_backward&&(v.cursor--,v.bra=v.cursor,v.slice_del()))}function u(){var r;m=!1,v.ket=v.cursor,v.eq_s_b(1,"e")&&(v.bra=v.cursor,o()&&(r=v.limit-v.cursor,v.out_grouping_b(g,97,232)&&(v.cursor=v.limit-r,v.slice_del(),m=!0,s())))}function c(){var r;o()&&(r=v.limit-v.cursor,v.out_grouping_b(g,97,232)&&(v.cursor=v.limit-r,v.eq_s_b(3,"gem")||(v.cursor=v.limit-r,v.slice_del(),s())))}var a,l,m,d=[new e("",-1,6),new e("á",0,1),new e("ä",0,1),new e("é",0,2),new e("ë",0,2),new e("í",0,3),new e("ï",0,3),new e("ó",0,4),new e("ö",0,4),new e("ú",0,5),new e("ü",0,5)],f=[new e("",-1,3),new e("I",0,2),new e("Y",0,1)],_=[new e("dd",-1,-1),new e("kk",-1,-1),new e("tt",-1,-1)],w=[new e("ene",-1,2),new e("se",-1,3),new e("en",-1,2),new e("heden",2,1),new e("s",-1,3)],b=[new e("end",-1,1),new e("ig",-1,2),new e("ing",-1,1),new e("lijk",-1,3),new e("baar",-1,4),new e("bar",-1,5)],p=[new e("aa",-1,-1),new e("ee",-1,-1),new e("oo",-1,-1),new e("uu",-1,-1)],g=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],h=[1,0,0,17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],k=[17,67,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],v=new i;this.setCurrent=function(r){v.setCurrent(r)},this.getCurrent=function(){return v.getCurrent()},this.stem=function(){var e=v.cursor;return function(){for(var e,i,n,o=v.cursor;;){if(v.bra=v.cursor,e=v.find_among(d,11))switch(v.ket=v.cursor,e){case 1:v.slice_from("a");continue;case 2:v.slice_from("e");continue;case 3:v.slice_from("i");continue;case 4:v.slice_from("o");continue;case 5:v.slice_from("u");continue;case 6:if(v.cursor>=v.limit)break;v.cursor++;continue}break}for(v.cursor=o,v.bra=o,v.eq_s(1,"y")?(v.ket=v.cursor,v.slice_from("Y")):v.cursor=o;;)if(i=v.cursor,v.in_grouping(g,97,232)){if(n=v.cursor,v.bra=n,v.eq_s(1,"i"))v.ket=v.cursor,v.in_grouping(g,97,232)&&(v.slice_from("I"),v.cursor=i);else if(v.cursor=n,v.eq_s(1,"y"))v.ket=v.cursor,v.slice_from("Y"),v.cursor=i;else if(r(i))break}else if(r(i))break}(),v.cursor=e,l=v.limit,a=l,n()||((l=v.cursor)<3&&(l=3),n()||(a=v.cursor)),v.limit_backward=e,v.cursor=v.limit,function(){var r,e,i,n,a,l,d=v.limit-v.cursor;if(v.ket=v.cursor,r=v.find_among_b(w,5))switch(v.bra=v.cursor,r){case 1:o()&&v.slice_from("heid");break;case 2:c();break;case 3:o()&&v.out_grouping_b(k,97,232)&&v.slice_del()}if(v.cursor=v.limit-d,u(),v.cursor=v.limit-d,v.ket=v.cursor,v.eq_s_b(4,"heid")&&(v.bra=v.cursor,t()&&(e=v.limit-v.cursor,v.eq_s_b(1,"c")||(v.cursor=v.limit-e,v.slice_del(),v.ket=v.cursor,v.eq_s_b(2,"en")&&(v.bra=v.cursor,c())))),v.cursor=v.limit-d,v.ket=v.cursor,r=v.find_among_b(b,6))switch(v.bra=v.cursor,r){case 1:if(t()){if(v.slice_del(),i=v.limit-v.cursor,v.ket=v.cursor,v.eq_s_b(2,"ig")&&(v.bra=v.cursor,t()&&(n=v.limit-v.cursor,!v.eq_s_b(1,"e")))){v.cursor=v.limit-n,v.slice_del();break}v.cursor=v.limit-i,s()}break;case 2:t()&&(a=v.limit-v.cursor,v.eq_s_b(1,"e")||(v.cursor=v.limit-a,v.slice_del()));break;case 3:t()&&(v.slice_del(),u());break;case 4:t()&&v.slice_del();break;case 5:t()&&m&&v.slice_del()}v.cursor=v.limit-d,v.out_grouping_b(h,73,232)&&(l=v.limit-v.cursor,v.find_among_b(p,4)&&v.out_grouping_b(g,97,232)&&(v.cursor=v.limit-l,v.ket=v.cursor,v.cursor>v.limit_backward&&(v.cursor--,v.bra=v.cursor,v.slice_del())))}(),v.cursor=v.limit_backward,function(){for(var r;;)if(v.bra=v.cursor,r=v.find_among(f,3))switch(v.ket=v.cursor,r){case 1:v.slice_from("y");break;case 2:v.slice_from("i");break;case 3:if(v.cursor>=v.limit)return;v.cursor++}}(),!0}};return function(r){return"function"==typeof r.update?r.update(function(r){return n.setCurrent(r),n.stem(),n.getCurrent()}):(n.setCurrent(r),n.stem(),n.getCurrent())}}(),r.Pipeline.registerFunction(r.du.stemmer,"stemmer-du"),r.du.stopWordFilter=r.generateStopWordFilter(" aan al alles als altijd andere ben bij daar dan dat de der deze die dit doch doen door dus een eens en er ge geen geweest haar had heb hebben heeft hem het hier hij hoe hun iemand iets ik in is ja je kan kon kunnen maar me meer men met mij mijn moet na naar niet niets nog nu of om omdat onder ons ook op over reeds te tegen toch toen tot u uit uw van veel voor want waren was wat werd wezen wie wil worden wordt zal ze zelf zich zij zijn zo zonder zou".split(" ")),r.Pipeline.registerFunction(r.du.stopWordFilter,"stopWordFilter-du")}}); -------------------------------------------------------------------------------- /site/themes/material/static/javascripts/lunr/lunr.jp.js: -------------------------------------------------------------------------------- 1 | !function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r="2"==e.version[0];e.jp=function(){this.pipeline.reset(),this.pipeline.add(e.jp.stopWordFilter,e.jp.stemmer),r?this.tokenizer=e.jp.tokenizer:(e.tokenizer&&(e.tokenizer=e.jp.tokenizer),this.tokenizerFn&&(this.tokenizerFn=e.jp.tokenizer))};var t=new e.TinySegmenter;e.jp.tokenizer=function(n){if(!arguments.length||null==n||void 0==n)return[];if(Array.isArray(n))return n.map(function(t){return r?new e.Token(t.toLowerCase()):t.toLowerCase()});for(var i=n.toString().toLowerCase().replace(/^\s+/,""),o=i.length-1;o>=0;o--)if(/\S/.test(i.charAt(o))){i=i.substring(0,o+1);break}return t.segment(i).filter(function(e){return!!e}).map(function(t){return r?new e.Token(t):t})},e.jp.stemmer=function(e){return e},e.Pipeline.registerFunction(e.jp.stemmer,"stemmer-jp"),e.jp.wordCharacters="一二三四五六七八九十百千万億兆一-龠々〆ヵヶぁ-んァ-ヴーア-ン゙a-zA-Za-zA-Z0-90-9",e.jp.stopWordFilter=function(t){if(-1===e.jp.stopWordFilter.stopWords.indexOf(r?t.toString():t))return t},e.jp.stopWordFilter=e.generateStopWordFilter("これ それ あれ この その あの ここ そこ あそこ こちら どこ だれ なに なん 何 私 貴方 貴方方 我々 私達 あの人 あのかた 彼女 彼 です あります おります います は が の に を で え から まで より も どの と し それで しかし".split(" ")),e.Pipeline.registerFunction(e.jp.stopWordFilter,"stopWordFilter-jp")}}); -------------------------------------------------------------------------------- /site/themes/material/static/javascripts/lunr/lunr.multi.js: -------------------------------------------------------------------------------- 1 | !function(e,i){"function"==typeof define&&define.amd?define(i):"object"==typeof exports?module.exports=i():i()(e.lunr)}(this,function(){return function(e){e.multiLanguage=function(){for(var i=Array.prototype.slice.call(arguments),t=i.join("-"),r="",n=[],s=[],p=0;p=u.limit)return;u.cursor=r+1}for(;!u.out_grouping(a,97,248);){if(u.cursor>=u.limit)return;u.cursor++}(i=u.cursor)=i&&(r=u.limit_backward,u.limit_backward=i,u.ket=u.cursor,e=u.find_among_b(t,29),u.limit_backward=r,e))switch(u.bra=u.cursor,e){case 1:u.slice_del();break;case 2:n=u.limit-u.cursor,u.in_grouping_b(m,98,122)?u.slice_del():(u.cursor=u.limit-n,u.eq_s_b(1,"k")&&u.out_grouping_b(a,97,248)&&u.slice_del());break;case 3:u.slice_from("er")}}(),u.cursor=u.limit,function(){var e,r=u.limit-u.cursor;u.cursor>=i&&(e=u.limit_backward,u.limit_backward=i,u.ket=u.cursor,u.find_among_b(o,2)?(u.bra=u.cursor,u.limit_backward=e,u.cursor=u.limit-r,u.cursor>u.limit_backward&&(u.cursor--,u.bra=u.cursor,u.slice_del())):u.limit_backward=e)}(),u.cursor=u.limit,function(){var e,r;u.cursor>=i&&(r=u.limit_backward,u.limit_backward=i,u.ket=u.cursor,(e=u.find_among_b(s,11))?(u.bra=u.cursor,u.limit_backward=r,1==e&&u.slice_del()):u.limit_backward=r)}(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}}(),e.Pipeline.registerFunction(e.no.stemmer,"stemmer-no"),e.no.stopWordFilter=e.generateStopWordFilter("alle at av bare begge ble blei bli blir blitt både båe da de deg dei deim deira deires dem den denne der dere deres det dette di din disse ditt du dykk dykkar då eg ein eit eitt eller elles en enn er et ett etter for fordi fra før ha hadde han hans har hennar henne hennes her hjå ho hoe honom hoss hossen hun hva hvem hver hvilke hvilken hvis hvor hvordan hvorfor i ikke ikkje ikkje ingen ingi inkje inn inni ja jeg kan kom korleis korso kun kunne kva kvar kvarhelst kven kvi kvifor man mange me med medan meg meget mellom men mi min mine mitt mot mykje ned no noe noen noka noko nokon nokor nokre nå når og også om opp oss over på samme seg selv si si sia sidan siden sin sine sitt sjøl skal skulle slik so som som somme somt så sånn til um upp ut uten var vart varte ved vere verte vi vil ville vore vors vort vår være være vært å".split(" ")),e.Pipeline.registerFunction(e.no.stopWordFilter,"stopWordFilter-no")}}); -------------------------------------------------------------------------------- /site/themes/material/static/javascripts/lunr/lunr.ru.js: -------------------------------------------------------------------------------- 1 | !function(e,n){"function"==typeof define&&define.amd?define(n):"object"==typeof exports?module.exports=n():n()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.ru=function(){this.pipeline.reset(),this.pipeline.add(e.ru.trimmer,e.ru.stopWordFilter,e.ru.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.ru.stemmer))},e.ru.wordCharacters="Ѐ-҄҇-ԯᴫᵸⷠ-ⷿꙀ-ꚟ︮︯",e.ru.trimmer=e.trimmerSupport.generateTrimmer(e.ru.wordCharacters),e.Pipeline.registerFunction(e.ru.trimmer,"trimmer-ru"),e.ru.stemmer=function(){var n=e.stemmerSupport.Among,r=e.stemmerSupport.SnowballProgram,t=new function(){function e(){for(;!g.in_grouping(h,1072,1103);){if(g.cursor>=g.limit)return!1;g.cursor++}return!0}function t(){for(;!g.out_grouping(h,1072,1103);){if(g.cursor>=g.limit)return!1;g.cursor++}return!0}function w(e,n){var r,t;if(g.ket=g.cursor,r=g.find_among_b(e,n)){switch(g.bra=g.cursor,r){case 1:if(t=g.limit-g.cursor,!g.eq_s_b(1,"а")&&(g.cursor=g.limit-t,!g.eq_s_b(1,"я")))return!1;case 2:g.slice_del()}return!0}return!1}function i(e,n){var r;return g.ket=g.cursor,!!(r=g.find_among_b(e,n))&&(g.bra=g.cursor,1==r&&g.slice_del(),!0)}function u(){return!!i(l,26)&&(w(f,8),!0)}function s(){var e;g.ket=g.cursor,(e=g.find_among_b(_,2))&&(g.bra=g.cursor,o<=g.cursor&&1==e&&g.slice_del())}var o,c,m=[new n("в",-1,1),new n("ив",0,2),new n("ыв",0,2),new n("вши",-1,1),new n("ивши",3,2),new n("ывши",3,2),new n("вшись",-1,1),new n("ившись",6,2),new n("ывшись",6,2)],l=[new n("ее",-1,1),new n("ие",-1,1),new n("ое",-1,1),new n("ые",-1,1),new n("ими",-1,1),new n("ыми",-1,1),new n("ей",-1,1),new n("ий",-1,1),new n("ой",-1,1),new n("ый",-1,1),new n("ем",-1,1),new n("им",-1,1),new n("ом",-1,1),new n("ым",-1,1),new n("его",-1,1),new n("ого",-1,1),new n("ему",-1,1),new n("ому",-1,1),new n("их",-1,1),new n("ых",-1,1),new n("ею",-1,1),new n("ою",-1,1),new n("ую",-1,1),new n("юю",-1,1),new n("ая",-1,1),new n("яя",-1,1)],f=[new n("ем",-1,1),new n("нн",-1,1),new n("вш",-1,1),new n("ивш",2,2),new n("ывш",2,2),new n("щ",-1,1),new n("ющ",5,1),new n("ующ",6,2)],a=[new n("сь",-1,1),new n("ся",-1,1)],p=[new n("ла",-1,1),new n("ила",0,2),new n("ыла",0,2),new n("на",-1,1),new n("ена",3,2),new n("ете",-1,1),new n("ите",-1,2),new n("йте",-1,1),new n("ейте",7,2),new n("уйте",7,2),new n("ли",-1,1),new n("или",10,2),new n("ыли",10,2),new n("й",-1,1),new n("ей",13,2),new n("уй",13,2),new n("л",-1,1),new n("ил",16,2),new n("ыл",16,2),new n("ем",-1,1),new n("им",-1,2),new n("ым",-1,2),new n("н",-1,1),new n("ен",22,2),new n("ло",-1,1),new n("ило",24,2),new n("ыло",24,2),new n("но",-1,1),new n("ено",27,2),new n("нно",27,1),new n("ет",-1,1),new n("ует",30,2),new n("ит",-1,2),new n("ыт",-1,2),new n("ют",-1,1),new n("уют",34,2),new n("ят",-1,2),new n("ны",-1,1),new n("ены",37,2),new n("ть",-1,1),new n("ить",39,2),new n("ыть",39,2),new n("ешь",-1,1),new n("ишь",-1,2),new n("ю",-1,2),new n("ую",44,2)],d=[new n("а",-1,1),new n("ев",-1,1),new n("ов",-1,1),new n("е",-1,1),new n("ие",3,1),new n("ье",3,1),new n("и",-1,1),new n("еи",6,1),new n("ии",6,1),new n("ами",6,1),new n("ями",6,1),new n("иями",10,1),new n("й",-1,1),new n("ей",12,1),new n("ией",13,1),new n("ий",12,1),new n("ой",12,1),new n("ам",-1,1),new n("ем",-1,1),new n("ием",18,1),new n("ом",-1,1),new n("ям",-1,1),new n("иям",21,1),new n("о",-1,1),new n("у",-1,1),new n("ах",-1,1),new n("ях",-1,1),new n("иях",26,1),new n("ы",-1,1),new n("ь",-1,1),new n("ю",-1,1),new n("ию",30,1),new n("ью",30,1),new n("я",-1,1),new n("ия",33,1),new n("ья",33,1)],_=[new n("ост",-1,1),new n("ость",-1,1)],b=[new n("ейше",-1,1),new n("н",-1,2),new n("ейш",-1,1),new n("ь",-1,3)],h=[33,65,8,232],g=new r;this.setCurrent=function(e){g.setCurrent(e)},this.getCurrent=function(){return g.getCurrent()},this.stem=function(){return c=g.limit,o=c,e()&&(c=g.cursor,t()&&e()&&t()&&(o=g.cursor)),g.cursor=g.limit,!(g.cursor=i&&(e-=i,t[e>>3]&1<<(7&e)))return this.cursor++,!0}return!1},in_grouping_b:function(t,i,s){if(this.cursor>this.limit_backward){var e=r.charCodeAt(this.cursor-1);if(e<=s&&e>=i&&(e-=i,t[e>>3]&1<<(7&e)))return this.cursor--,!0}return!1},out_grouping:function(t,i,s){if(this.cursors||e>3]&1<<(7&e)))return this.cursor++,!0}return!1},out_grouping_b:function(t,i,s){if(this.cursor>this.limit_backward){var e=r.charCodeAt(this.cursor-1);if(e>s||e>3]&1<<(7&e)))return this.cursor--,!0}return!1},eq_s:function(t,i){if(this.limit-this.cursor>1),f=0,l=o0||e==s||c)break;c=!0}}for(;;){if(o>=(_=t[s]).s_size){if(this.cursor=n+_.s_size,!_.method)return _.result;var b=_.method();if(this.cursor=n+_.s_size,b)return _.result}if((s=_.substring_i)<0)return 0}},find_among_b:function(t,i){for(var s=0,e=i,n=this.cursor,u=this.limit_backward,o=0,h=0,c=!1;;){for(var a=s+(e-s>>1),f=0,l=o=0;_--){if(n-l==u){f=-1;break}if(f=r.charCodeAt(n-1-l)-m.s[_])break;l++}if(f<0?(e=a,h=l):(s=a,o=l),e-s<=1){if(s>0||e==s||c)break;c=!0}}for(;;){var m=t[s];if(o>=m.s_size){if(this.cursor=n-m.s_size,!m.method)return m.result;var b=m.method();if(this.cursor=n-m.s_size,b)return m.result}if((s=m.substring_i)<0)return 0}},replace_s:function(t,i,s){var e=s.length-(i-t),n=r.substring(0,t),u=r.substring(i);return r=n+s+u,this.limit+=e,this.cursor>=i?this.cursor+=e:this.cursor>t&&(this.cursor=t),e},slice_check:function(){if(this.bra<0||this.bra>this.ket||this.ket>this.limit||this.limit>r.length)throw"faulty slice operation"},slice_from:function(r){this.slice_check(),this.replace_s(this.bra,this.ket,r)},slice_del:function(){this.slice_from("")},insert:function(r,t,i){var s=this.replace_s(r,t,i);r<=this.bra&&(this.bra+=s),r<=this.ket&&(this.ket+=s)},slice_to:function(){return this.slice_check(),r.substring(this.bra,this.ket)},eq_v_b:function(r){return this.eq_s_b(r.length,r)}}}},r.trimmerSupport={generateTrimmer:function(r){var t=new RegExp("^[^"+r+"]+"),i=new RegExp("[^"+r+"]+$");return function(r){return"function"==typeof r.update?r.update(function(r){return r.replace(t,"").replace(i,"")}):r.replace(t,"").replace(i,"")}}}}}); -------------------------------------------------------------------------------- /site/themes/material/static/javascripts/lunr/lunr.sv.js: -------------------------------------------------------------------------------- 1 | !function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.sv=function(){this.pipeline.reset(),this.pipeline.add(e.sv.trimmer,e.sv.stopWordFilter,e.sv.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.sv.stemmer))},e.sv.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.sv.trimmer=e.trimmerSupport.generateTrimmer(e.sv.wordCharacters),e.Pipeline.registerFunction(e.sv.trimmer,"trimmer-sv"),e.sv.stemmer=function(){var r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,t=new function(){var e,t,i=[new r("a",-1,1),new r("arna",0,1),new r("erna",0,1),new r("heterna",2,1),new r("orna",0,1),new r("ad",-1,1),new r("e",-1,1),new r("ade",6,1),new r("ande",6,1),new r("arne",6,1),new r("are",6,1),new r("aste",6,1),new r("en",-1,1),new r("anden",12,1),new r("aren",12,1),new r("heten",12,1),new r("ern",-1,1),new r("ar",-1,1),new r("er",-1,1),new r("heter",18,1),new r("or",-1,1),new r("s",-1,2),new r("as",21,1),new r("arnas",22,1),new r("ernas",22,1),new r("ornas",22,1),new r("es",21,1),new r("ades",26,1),new r("andes",26,1),new r("ens",21,1),new r("arens",29,1),new r("hetens",29,1),new r("erns",21,1),new r("at",-1,1),new r("andet",-1,1),new r("het",-1,1),new r("ast",-1,1)],s=[new r("dd",-1,-1),new r("gd",-1,-1),new r("nn",-1,-1),new r("dt",-1,-1),new r("gt",-1,-1),new r("kt",-1,-1),new r("tt",-1,-1)],a=[new r("ig",-1,1),new r("lig",0,1),new r("els",-1,1),new r("fullt",-1,3),new r("löst",-1,2)],o=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,24,0,32],u=[119,127,149],c=new n;this.setCurrent=function(e){c.setCurrent(e)},this.getCurrent=function(){return c.getCurrent()},this.stem=function(){var r=c.cursor;return function(){var r,n=c.cursor+3;if(t=c.limit,0<=n||n<=c.limit){for(e=n;;){if(r=c.cursor,c.in_grouping(o,97,246)){c.cursor=r;break}if(c.cursor=r,c.cursor>=c.limit)return;c.cursor++}for(;!c.out_grouping(o,97,246);){if(c.cursor>=c.limit)return;c.cursor++}(t=c.cursor)=t&&(c.limit_backward=t,c.cursor=c.limit,c.ket=c.cursor,e=c.find_among_b(i,37),c.limit_backward=r,e))switch(c.bra=c.cursor,e){case 1:c.slice_del();break;case 2:c.in_grouping_b(u,98,121)&&c.slice_del()}}(),c.cursor=c.limit,function(){var e=c.limit_backward;c.cursor>=t&&(c.limit_backward=t,c.cursor=c.limit,c.find_among_b(s,7)&&(c.cursor=c.limit,c.ket=c.cursor,c.cursor>c.limit_backward&&(c.bra=--c.cursor,c.slice_del())),c.limit_backward=e)}(),c.cursor=c.limit,function(){var e,r;if(c.cursor>=t){if(r=c.limit_backward,c.limit_backward=t,c.cursor=c.limit,c.ket=c.cursor,e=c.find_among_b(a,5))switch(c.bra=c.cursor,e){case 1:c.slice_del();break;case 2:c.slice_from("lös");break;case 3:c.slice_from("full")}c.limit_backward=r}}(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return t.setCurrent(e),t.stem(),t.getCurrent()}):(t.setCurrent(e),t.stem(),t.getCurrent())}}(),e.Pipeline.registerFunction(e.sv.stemmer,"stemmer-sv"),e.sv.stopWordFilter=e.generateStopWordFilter("alla allt att av blev bli blir blivit de dem den denna deras dess dessa det detta dig din dina ditt du där då efter ej eller en er era ert ett från för ha hade han hans har henne hennes hon honom hur här i icke ingen inom inte jag ju kan kunde man med mellan men mig min mina mitt mot mycket ni nu när någon något några och om oss på samma sedan sig sin sina sitta själv skulle som så sådan sådana sådant till under upp ut utan vad var vara varför varit varje vars vart vem vi vid vilka vilkas vilken vilket vår våra vårt än är åt över".split(" ")),e.Pipeline.registerFunction(e.sv.stopWordFilter,"stopWordFilter-sv")}}); -------------------------------------------------------------------------------- /site/themes/material/static/javascripts/modernizr.js: -------------------------------------------------------------------------------- 1 | !function(e,t){for(var n in t)e[n]=t[n]}(window,function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=4)}({4:function(e,t,n){"use strict";n(5)},5:function(e,t){!function(t){!function(e,t,n){function r(e,t){return typeof e===t}function o(e){var t=_.className,n=C._config.classPrefix||"";if(T&&(t=t.baseVal),C._config.enableJSClass){var r=new RegExp("(^|\\s)"+n+"no-js(\\s|$)");t=t.replace(r,"$1"+n+"js$2")}C._config.enableClasses&&(t+=" "+n+e.join(" "+n),T?_.className.baseVal=t:_.className=t)}function i(e,t){if("object"==typeof e)for(var n in e)b(e,n)&&i(n,e[n]);else{e=e.toLowerCase();var r=e.split("."),s=C[r[0]];if(2==r.length&&(s=s[r[1]]),void 0!==s)return C;t="function"==typeof t?t():t,1==r.length?C[r[0]]=t:(!C[r[0]]||C[r[0]]instanceof Boolean||(C[r[0]]=new Boolean(C[r[0]])),C[r[0]][r[1]]=t),o([(t&&0!=t?"":"no-")+r.join("-")]),C._trigger(e,t)}return C}function s(){return"function"!=typeof t.createElement?t.createElement(arguments[0]):T?t.createElementNS.call(t,"http://www.w3.org/2000/svg",arguments[0]):t.createElement.apply(t,arguments)}function a(){var e=t.body;return e||(e=s(T?"svg":"body"),e.fake=!0),e}function u(e,n,r,o){var i,u,l,f,c="modernizr",d=s("div"),p=a();if(parseInt(r,10))for(;r--;)l=s("div"),l.id=o?o[r]:c+(r+1),d.appendChild(l);return i=s("style"),i.type="text/css",i.id="s"+c,(p.fake?p:d).appendChild(i),p.appendChild(d),i.styleSheet?i.styleSheet.cssText=e:i.appendChild(t.createTextNode(e)),d.id=c,p.fake&&(p.style.background="",p.style.overflow="hidden",f=_.style.overflow,_.style.overflow="hidden",_.appendChild(p)),u=n(d,e),p.fake?(p.parentNode.removeChild(p),_.style.overflow=f,_.offsetHeight):d.parentNode.removeChild(d),!!u}function l(e,t){return!!~(""+e).indexOf(t)}function f(e){return e.replace(/([A-Z])/g,function(e,t){return"-"+t.toLowerCase()}).replace(/^ms-/,"-ms-")}function c(t,n,r){var o;if("getComputedStyle"in e){o=getComputedStyle.call(e,t,n);var i=e.console;if(null!==o)r&&(o=o.getPropertyValue(r));else if(i){var s=i.error?"error":"log";i[s].call(i,"getComputedStyle returning null, its possible modernizr test results are inaccurate")}}else o=!n&&t.currentStyle&&t.currentStyle[r];return o}function d(t,r){var o=t.length;if("CSS"in e&&"supports"in e.CSS){for(;o--;)if(e.CSS.supports(f(t[o]),r))return!0;return!1}if("CSSSupportsRule"in e){for(var i=[];o--;)i.push("("+f(t[o])+":"+r+")");return i=i.join(" or "),u("@supports ("+i+") { #modernizr { position: absolute; } }",function(e){return"absolute"==c(e,null,"position")})}return n}function p(e){return e.replace(/([a-z])-([a-z])/g,function(e,t,n){return t+n.toUpperCase()}).replace(/^-/,"")}function h(e,t,o,i){function a(){f&&(delete j.style,delete j.modElem)}if(i=!r(i,"undefined")&&i,!r(o,"undefined")){var u=d(e,o);if(!r(u,"undefined"))return u}for(var f,c,h,m,v,g=["modernizr","tspan","samp"];!j.style&&g.length;)f=!0,j.modElem=s(g.shift()),j.style=j.modElem.style;for(h=e.length,c=0;h>c;c++)if(m=e[c],v=j.style[m],l(m,"-")&&(m=p(m)),j.style[m]!==n){if(i||r(o,"undefined"))return a(),"pfx"!=t||m;try{j.style[m]=o}catch(e){}if(j.style[m]!=v)return a(),"pfx"!=t||m}return a(),!1}function m(e,t){return function(){return e.apply(t,arguments)}}function v(e,t,n){var o;for(var i in e)if(e[i]in t)return!1===n?e[i]:(o=t[e[i]],r(o,"function")?m(o,n||t):o);return!1}function g(e,t,n,o,i){var s=e.charAt(0).toUpperCase()+e.slice(1),a=(e+" "+k.join(s+" ")+s).split(" ");return r(t,"string")||r(t,"undefined")?h(a,t,o,i):(a=(e+" "+A.join(s+" ")+s).split(" "),v(a,t,n))}function y(e,t,r){return g(e,n,n,t,r)}var w=[],S={_version:"3.5.0",_config:{classPrefix:"",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,t){var n=this;setTimeout(function(){t(n[e])},0)},addTest:function(e,t,n){w.push({name:e,fn:t,options:n})},addAsyncTest:function(e){w.push({name:null,fn:e})}},C=function(){};C.prototype=S,C=new C;var b,x=[],_=t.documentElement,T="svg"===_.nodeName.toLowerCase();!function(){var e={}.hasOwnProperty;b=r(e,"undefined")||r(e.call,"undefined")?function(e,t){return t in e&&r(e.constructor.prototype[t],"undefined")}:function(t,n){return e.call(t,n)}}(),S._l={},S.on=function(e,t){this._l[e]||(this._l[e]=[]),this._l[e].push(t),C.hasOwnProperty(e)&&setTimeout(function(){C._trigger(e,C[e])},0)},S._trigger=function(e,t){if(this._l[e]){var n=this._l[e];setTimeout(function(){var e;for(e=0;e