monero
版权所有(C)2014-2024, monero项目部分版权所有(C)2012-2013 Cryptonote开发人员。
目录
- 发展资源
- 脆弱性响应
- 研究
- 公告
- 翻译
- 覆盖范围
- 介绍
- 关于这个项目
- 支持该项目
- 执照
- 贡献
- 计划的软件升级
- 发布登台时间表和协议
- 从源头编译monero
- 依赖性
- Guix构建
- 国际化
- 使用tor
- 修剪
- 调试
- 已知问题
发展资源
- 网络:获取monero .org
- 邮件:dev@get monero .org
- github:https://github.com/monero-project/ monero
- IRC:#Libera上的monero -Dev
- 强烈建议您加入monero -Dev IRC频道,如果您正在开发使用monero的软件。由于此开源软件项目的性质,加入此渠道和闲置是在monero生态系统中保持最佳实践和新发展的最佳方式。您需要做的就是加入IRC频道并闲置,以保持最新的monero开发的更新。如果不这样做,则冒着浪费资源来开发与monero网络不兼容的集成。 monero Core团队和社区不断努力通过其他平台传达更新,开发和文档,但是为了获得最佳信息,您需要与其他monero开发人员进行交谈,并且它们正在IRC上。 monero -DEV是关于monero开发的,没有获得有关使用monero帮助,或者帮助开发其他软件(包括您的软件),除非它也与monero代码本身有关。对于这些情况,请结帐monero 。
脆弱性响应
- 我们的脆弱性响应过程鼓励负责任的披露
- 我们也可以通过hackerone提供
研究
monero Research Lab是一个开放的论坛,社区协调有关monero密码学,协议,可及性,分析等的研究。我们欢迎外部研究人员的合作和贡献!因为并非所有实验室的工作和出版物都是作为传统的预印本或文章发行的,所以如果您为自己的monero研究进行文学评论,它们可能很容易错过。如果您有疑问,希望合作或希望指导避免不必要地复制早期或已知的工作,则鼓励您与monero研究社区联系。
monero研究社区可在Libera的monero -Research -Lab中获得IRC上的可用,该研究也可以通过矩阵访问。
公告
- 您可以订阅公告ListServ,以获取monero Core团队的关键公告。公告列表对于了解何时需要软件更新非常有帮助。
翻译
CLI钱包有不同的语言。如果您想帮助翻译它,请参阅我们自托管的本地化平台Weblate,on translate.get monero .org。每个翻译都必须在平台上上传,拉动请求直接编辑此存储库中的代码将被关闭。如果您需要魏布特(Weblate)的帮助,则可以在此处找到带有屏幕截图的指南。
如果您需要有关翻译的帮助/支持/信息,请联系本地化工作组。您可以在工作组的存储库上找到完整的联系人列表: monero译。
覆盖范围
| 类型 | 地位 |
|---|---|
| 掩护 | |
| OSS Fuzz | |
| 负责人 | |
| 执照 |
介绍
monero是一种私人,安全,不可追踪,分散的数字货币。您是您的银行,您可以控制您的资金,除非您允许他们这样做,否则没人可以追踪您的转移。
隐私: monero使用一个密码音响系统,使您可以在区块链上轻松揭示交易(每个人都拥有的交易的分类帐),允许您发送和接收资金。这样可以确保您的购买,收据和所有转让默认情况下保持私密。
安全性:使用分布式点对点共识网络的功能,网络上的每笔交易都是密码保护的。单个钱包有一个25个字的助记符种子,仅显示一次,可以写下来备份钱包。钱包文件应使用强的密码器进行加密,以确保它们毫无用处。
不可信性:通过利用戒指签名,一种特殊类型的密码学的特殊属性, monero能够确保交易不仅是不可追踪的,而且具有可选的模棱两可的衡量标准,以确保交易不能轻易绑架与单个用户或计算机。
权力下放: monero的效用取决于其分散的点对点共识网络 – 任何人都应该能够运行monero软件,验证区块链的完整性,并使用消费者级商品硬件参与monero网络的各个方面。 monero网络的权力下放是通过软件开发来维护的,该软件开发将运行monero软件的成本降至最低,并抑制专业的非商品硬件的扩散。
关于这个项目
这是monero的核心实现。它是开源的,并且完全免费使用而无需限制,除了下面的许可协议中指定的内容。对于任何创建monero的替代实现的人都没有限制,该实现以兼容的方式使用协议和网络。
与许多开发项目一样,Github上的存储库被认为是最新更改的“分期”区域。在将更改合并到主要存储库上的该分支之前,他们会在自己的分支机构中的个体开发人员进行测试,作为拉力请求提交,然后由专注于测试和代码审查的贡献者进行测试。话虽如此,在生产环境中使用该存储库之前,应仔细考虑存储库,除非存储库中有一个您正在遇到的特定表演问题的补丁。通常,使用标记的版本进行稳定是一个更好的主意。
欢迎任何人为monero的代码库做出贡献!如果您有修复程序或代码更改,请随时将其作为拉请求直接提交给“主”分支。如果更改相对较小或不影响代码库的其他部分,则任何一个合作者都可以立即合并。另一方面,如果更改特别大或复杂,则可以预期在提交拉动请求之前,甚至直接按照拉力请求进行详细讨论。
支持该项目
monero是100%由社区赞助的努力。如果您想加入我们的努力,您可以做的最简单的事情就是在财务上支持该项目。如果使用支持OpenAlias标准的客户,则可以monero monero和Bitcoin捐赠。另外,您可以通过捐赠命令将XMR发送到monero捐赠地址(在命令行钱包中键入帮助以获取详细信息)。
monero捐赠地址是:
888tNkZrPN6JsEgekjMnABU4TBzc2Dt29EPAvkRxbANsAnjyPbb3iQ1YBRk1UXcdRsiKc9dhwMVgN5S9cQUiyoogDavup3H
ViewKey:
F359631075708155CC3D92A32B75A7D02A5DCF27756707B47A2B31B21C389501
使用地址和查看器还原的基地地址:44AFFQ5KSIGBOZ4NMDWYTN18OBC8AEEMS33DBLWS3H7OTXFT3XJRPDTQGV7SQSSABYBBBBBB98UNUNUNUNUNUNBR2VBBBBET7F2WFN3RVFN3RVGGQBEP3AA
比特币捐赠地址是:
1KTEXDEMPDXSBCG55HEUUTJDRYQBC5ZL8H
核心发展资金和/或一些支持服务也由赞助商提供:
还有几个采矿池可以捐赠部分费用,可以在我们的BitCointalk帖子上找到其中的清单。
执照
请参阅许可证。
贡献
如果您想提供帮助,请参阅贡献一组准则。
计划的软件/网络升级
monero使用计划的软件/网络升级(硬叉)机制将新功能实现到monero软件和网络中。这意味着monero (最终用户和服务提供商)的用户应运行当前版本并在可用新版本时升级其软件。当在代码库中开发和实现新功能时,会进行软件升级。网络升级与软件升级同时进行,以修改monero网络的共识规则。在预定的网络升级日期之前,将提供网络升级所需的软件。请在此日期之前查看存储库,以获取适当的monero软件版本。以下是下一次升级的历史时间表和预计时间表。
以YYYY-MM-DD格式提供日期。 “最低”是遵循新共识规则的软件版本。 “推荐”版本可能包括错误修复和其他不影响共识规则的新功能。
| 软件升级块高度 | 日期 | 叉版本 | 最低monero版本 | 推荐的monero版本 | 细节 |
|---|---|---|---|---|---|
| 1009827 | 2016-03-22 | v2 | v0.9.4 | v0.9.4 | 仅允许> =振铃3,blocktime = 120秒,无收费的阻止60 kb |
| 1141317 | 2016-09-21 | V3 | v0.9.4 | V0.10.0 | 将共插入式划分为面额 |
| 1220516 | 2017-01-05 | v4 | V0.10.1 | V0.10.2.1 | 允许正常和戒指交易 |
| 1288616 | 2017-04-15 | V5 | V0.10.3.0 | V0.10.3.1 | 调整后的最小块和费用算法 |
| 1400000 | 2017-09-16 | V6 | V0.11.0.0 | V0.11.0.0 | 仅允许RINGCT交易,仅允许> =振铃5 |
| 1546000 | 2018-04-06 | V7 | v0.12.0.0 | V0.12.3.0 | Cryptonight变体1,响起> = 7,排序输入 |
| 1685555 | 2018-10-18 | V8 | V0.13.0.0 | V0.13.0.4 | 最大交易大小为无惩罚块大小的一半,启用了防弹件,加密货币2,固定响铃11 |
| 1686275 | 2018-10-19 | v9 | V0.13.0.0 | V0.13.0.4 | 需要防弹 |
| 1788000 | 2019-03-09 | v10 | V0.14.0.0 | V0.14.1.2 | 基于Cryptonight-R的新功率,新的块重量算法,略有效率的RINGCT格式 |
| 1788720 | 2019-03-10 | V11 | V0.14.0.0 | V0.14.1.2 | 禁止旧的ringct交易格式 |
| 1978433 | 2019-11-30 | V12 | v0.15.0.0 | V0.16.0.0 | 新功率基于Randomx,仅允许> = 2输出,更改为用于计算惩罚的块中位数,v1 coinbase是禁止的,禁止的Coinbase中的RCT SIGS,禁止使用10个块锁定时间用于传入的输出时间 |
| 2210000 | 2020-10-17 | V13 | V0.17.0.0 | V0.17.3.2 | 新的CLSAG交易格式 |
| 2210720 | 2020-10-18 | V14 | V0.17.1.1 | V0.17.3.2 | 禁止旧的MLSAG交易格式 |
| 2688888 | 2022-08-13 | V15 | V0.18.0.0 | V0.18.4.1 | 振动= 16,防弹+,查看标签,调整的动态块重量算法 |
| 2689608 | 2022-08-14 | V16 | V0.18.0.0 | V0.18.4.1 | 禁止旧V14交易格式 |
| xxxxxxx | xxx-xx-xx | xxx | vx.xx.xx | vx.xx.xx | xxx |
X表明这些细节尚未确定从提交日期开始。
*表示截至提交日期的估计
发布登台时间表和协议
在预定的软件升级之前大约三个月,将使用新的版本版本标签创建主分支。然后应向Master和New Release分支提出地址错误的请求。不应向发布分支提出需要进行大量审查和测试的拉请求(通常,优化和新功能)。
从源头编译monero
依赖性
下表总结了构建所需的工具和库。此存储库中还包括一些库(标记为“供应商”)。默认情况下,构建使用安装在系统上的库,而忽略了供应商来源。但是,如果在系统上找不到库,则将构建和使用供应商来源。供应商也用于静态链接的构建,因为配电软件包通常仅包含共享的库二进制文件(.SO),但不包括静态库存档(.A)。
| dep | 最小。版本 | 供应商 | Debian/Ubuntu PKG | Arch Pkg | void pkg | Fedora PKG | 选修的 | 目的 |
|---|---|---|---|---|---|---|---|---|
| 海湾合作委员会 | 7 | 不 | 建筑物必不可少的 | 基础 | 基础 | 海湾合作委员会 | 不 | |
| cmake | 3.5 | 不 | cmake | cmake | cmake | cmake | 不 | |
| pkg-config | 任何 | 不 | pkg-config | 基础 | 基础 | PKGCONF | 不 | |
| 促进 | 1.66 | 不 | libboost-all-dev | 促进 | Boost Devel | Boost Devel | 不 | C ++库 |
| Openssl | 基本上是任何 | 不 | libssl-dev | Openssl | Openssl-Devel | Openssl-Devel | 不 | SHA256总和 |
| libzmq | 4.2.0 | 不 | libzmq3-dev | Zeromq | Zeromq-Devel | Zeromq-Devel | 不 | Zeromq库 |
| libunbound | 1.4.16 | 不 | libunbound-dev | 未绑定 | 未结合的 | 未结合的 | 不 | DNS解析器 |
| libsodium | ? | 不 | libsodium-dev | libsodium | libsodium-devel | libsodium-devel | 不 | 密码学 |
| libunwind | 任何 | 不 | libunwind8-dev | libunwind | libunwind-devel | libunwind-devel | 是的 | 堆栈跟踪 |
| liblzma | 任何 | 不 | liblzma-dev | xz | liblzma-devel | xz-devel | 是的 | 对于libunwind |
| LibrAdline | 6.3.0 | 不 | LibrAdline6-dev | 阅读线 | 读取线 | 读取线 | 是的 | 输入编辑 |
| 外籍 | 1.1 | 不 | libexpat1-dev | 外籍 | 外籍人士 | 外籍人士 | 是的 | XML解析 |
| gtest | 1.5 | 是的 | libgtest-dev | gtest | gtest-devel | gtest-devel | 是的 | 测试套件 |
| CCACHE | 任何 | 不 | CCACHE | CCACHE | CCACHE | CCACHE | 是的 | 汇编。缓存 |
| doxygen | 任何 | 不 | doxygen | doxygen | doxygen | doxygen | 是的 | 文档 |
| GraphViz | 任何 | 不 | GraphViz | GraphViz | GraphViz | GraphViz | 是的 | 文档 |
| lrelease | ? | 不 | qttools5-dev-tools | QT5工具 | QT5工具 | qt5-linguist | 是的 | 翻译 |
| libhidapi | ? | 不 | libhidapi-dev | Hidapi | Hidapi-Devel | Hidapi-Devel | 是的 | 硬件钱包 |
| libusb | ? | 不 | libusb-1.0-0-dev | libusb | libusb-devel | libusbx-devel | 是的 | 硬件钱包 |
| libprotobuf | ? | 不 | libprotobuf-dev | Protobuf | Protobuf-Devel | Protobuf-Devel | 是的 | 硬件钱包 |
| 原始 | ? | 不 | Protobuf互补剂 | Protobuf | Protobuf | Protobuf互补剂 | 是的 | 硬件钱包 |
| libudev | ? | 不 | libudev-dev | Systemd | eudev-libudev-devel | SystemD-Devel | 是的 | 硬件钱包 |
在Debian/Ubuntu上一次安装所有依赖项:
sudo apt update && sudo apt install build-essential cmake pkg-config libssl-dev libzmq3-dev libunbound-dev libsodium-dev libunwind8-dev liblzma-dev libreadline6-dev libexpat1-dev qttools5-dev-tools libhidapi-dev libusb-1.0-0-dev libprotobuf-dev protobuf-compiler libudev-dev libboost-chrono-dev libboost-date-time-dev libboost-filesystem-dev libboost-locale-dev libboost-program-options-dev libboost-regex-dev libboost-serialization-dev libboost-system-dev libboost-thread-dev python3 ccache doxygen graphviz git curl autoconf libtool gperf
立即在Arch上安装所有依赖项:
sudo pacman -Syu --needed base-devel cmake boost openssl zeromq unbound libsodium libunwind xz readline expat python3 ccache doxygen graphviz qt5-tools hidapi libusb protobuf systemd
立即在Fedora上安装所有依赖项:
sudo dnf install gcc gcc-c++ cmake pkgconf boost-devel openssl-devel zeromq-devel unbound-devel libsodium-devel libunwind-devel xz-devel readline-devel expat-devel ccache doxygen graphviz qt5-linguist hidapi-devel libusbx-devel protobuf-devel protobuf-compiler systemd-devel
立即在OpenSuse上安装所有依赖项:
sudo zypper ref && sudo zypper in cppzmq-devel libboost_chrono-devel libboost_date_time-devel libboost_filesystem-devel libboost_locale-devel libboost_program_options-devel libboost_regex-devel libboost_serialization-devel libboost_system-devel libboost_thread-devel libexpat-devel libminiupnpc-devel libsodium-devel libunwind-devel unbound-devel cmake doxygen ccache fdupes gcc-c++ libevent-devel libopenssl-devel pkgconf-pkg-config readline-devel xz-devel libqt5-qttools-devel patterns-devel-C-C++-devel_C_C++
用提供的Brewfile立即在MacOS上安装所有依赖项:
brew update && brew bundle --file=contrib/brew/Brewfile
FreeBSD 12.1建立依赖性所需的单线:
pkg install git gmake cmake pkgconf boost-libs libzmq4 libsodium unbound
克隆存储库
递归克隆到需要的子模块:
git clone --recursive https://github*.**com/monero-project/ monero
如果您已经克隆了回购,请初始化和更新:
cd monero && git submodule init && git submodule update
注意:如果分支之间存在子模块差异,则在更改分支以成功构建后,您可能需要使用git subpodule sync && git subpodule更新。
建立说明
monero使用CMAKE构建系统和最高级别的filefile,可根据需要调用cmake命令。
在Linux和MacOS上
-
安装依赖项
-
更改为源代码目录的根,更改为最新版本分支,然后构建:
monero
git checkout release-v0.18
make\”>cd monero git checkout release-v0.18 make可选:如果您的计算机有多个内核和足够的内存,请通过运行make -j <线程>而不是制造而启用并行构建。对于这是值得的,该机器应具有一个核心,每个线程可用约2GB。
注意:上面的说明将编译monero软件的最稳定版本。如果您想使用和测试最新软件,请使用Git Checkout Master。主分支可能包含不稳定且与Release软件不兼容的更新,尽管总是鼓励测试。
-
可以在构建/释放/bin中找到生成的可执行文件
-
添加路径=“ $ path:$ home/ monero /build/build/preame/bin”到.profile
-
与monero D -Detach一起运行monero
-
可选:构建并运行测试套件以验证二进制文件:
make release-test
注意:core_tests测试可能需要几个小时才能完成。
-
可选:建造适合调试的二进制文件:
make debug
-
可选:在doc/html中构建文档(如果未安装graphviz,则amit_dot =是的):
HAVE_DOT=YES doxygen Doxyfile
-
可选:使用CCACHE不要重建翻译单元,但实际上并没有真正改变。 monero的cmakelists.txt文件自动处理它
sudo apt install ccache
在覆盆子pi上
在Raspberry Pi 5B上测试了Raspberry Pi OS(64位),并从https://www.r*a*spber*ry.com/software/operating/operating-systems/中与Debian 12一起测试。
-
apt-get更新&& apt-get升级以安装最新软件
-
从上表中的“ Debian”列中安装monero的依赖项。
-
可选:增加系统交换大小:
sudo /etc/init.d/dphys-swapfile stop sudo nano /etc/dphys-swapfile CONF_SWAPSIZE=2048 sudo /etc/init.d/dphys-swapfile start
-
如果在没有外部电源的情况下使用外部硬盘,请确保通过将“ max_usb_current = 1”行添加到 /boot/config.txt时,可以在同步时获得足够的电源来避免硬件问题
-
克隆· monero (Clone Monero)和查看最新版本版本:
monero.git
cd monero
git checkout v0.18.4.1\”>git clone --recursive https://github*.**com/monero-project/ monero .git cd monero git checkout v0.18.4.1 -
建造:
USE_SINGLE_BUILDDIR=1 make release
-
等待几个小时
-
可以在构建/释放/bin中找到生成的可执行文件
-
添加导出路径=“ $ path:$ home/ monero /build/build/repares/bin”到$ home/.profile
-
运行源$ home/.profile
-
与monero D -Detach一起运行monero
-
您可能希望在构建完成后减少交换文件的大小,并从主目录中删除Boost目录
在Windows上:
可以使用MSYS2环境中的MINGW工具链在Windows上构建Windows的二进制文件。 MSYS2环境模拟了POSIX系统。该工具链在环境中运行,并且可以作为常规Windows应用程序在环境外运行的交叉编译二进制文件。
准备构建环境
-
下载并安装MSYS2安装程序。安装MSYS2需要64位Windows 10或更新。
-
通过MSYS2 MSYS快捷方式打开MSYS Shell
-
使用Pacman更新软件包:
pacman -Syu
-
安装依赖项:
pacman -S mingw-w64-x86_64-toolchain make mingw-w64-x86_64-cmake mingw-w64-x86_64-boost mingw-w64-x86_64-openssl mingw-w64-x86_64-zeromq mingw-w64-x86_64-libsodium mingw-w64-x86_64-hidapi mingw-w64-x86_64-unbound
-
通过msys2 mingw64快捷方式打开mingw shell。
克隆
-
要git克隆,运行:
git clone --recursive https://github*.**com/monero-project/ monero .git
建筑
-
更改为克隆目录,运行:
cd monero -
如果您想要特定的版本/标签,请为该版本进行GIT结帐。例如。 \’v0.18.4.1\’。如果您不在乎该版本,而只是想要大师的二进制文件,请跳过此步骤:
git checkout v0.18.4.1
-
要构建monero ,请运行:
make release-static -j $( nproc )可以在构建/释放/bin中找到生成的可执行文件
-
可选:要构建适合调试的Windows二进制文件,请运行:
make debug -j $( nproc )可以在build/debug/bin中找到生成的可执行文件
在FreeBSD上:
可以通过按下上面的Linux指令从头开始构建该项目(但请使用Gmake而不是Make)。如果您正在监狱中运行monero ,则需要将SYSVSEM =“ New”添加到监狱配置中,否则LMDB将传达错误消息:无法打开LMDB环境:未实现功能。
monero也可以作为端口或软件包作为monero -Cli。
在OpenBSD上:
您需要在系统中添加一些软件包。 PKG_ADD CMAKE GMAKE ZEROMQ LIBICONV BOOST LIBUNBOUND。
Doxygen和GraphViz软件包是可选的,需要XBase集。运行测试套件还需要py3-重复程序包。
建造monero :Gmake
注意:在编译最新版本的monero作为普通用户时,您可能会遇到以下错误:
LLVM ERROR: out of memory c++: error: unable to execute command: Abort trap (core dumped)
然后,您需要将数据ULIMIT大小提高到2GB,然后重试:Ulimit -D 2000000
在netbsd上:
检查依赖项是否存在:pkg_info -c libexecinfo boost-boost-headers boost libs protobuf readline libusb1 zeromq git-base pkgconf gmake gmake cmake |更多,并使用PKG_ADD或从PKGSRC树安装任何报告缺少的内容。阅读线是可选的,但值得拥有。
第三方依赖关系通常不在/usr/pkg/之下,但是如果您有自定义设置,请相应地调整“/usr/pkg”(下)。
如上所述,将monero存储库克隆递归并查看最新版本。然后构建monero :gmake boost_root =/usr/pkg ldflags =“ – wl,-r/usr/pkg/lib”版本。可以在build/netbsd/[Release版本]/Release/bin/中找到生成的可执行文件。
关于Solaris:
默认的Solaris链接器无法使用,您必须安装GNU LD,然后手动运行Cmake,并使用GNU LD副本的路径:
mkdir -p build/release cd build/release cmake -DCMAKE_LINKER=/path/to/ld -D CMAKE_BUILD_TYPE=Release ../.. cd ../..
然后,您可以照常运行。
交叉编译
您还可以使用Repents System在Linux上的Linux上的静态二进制文件进行跨编译静态二进制文件。
- 用于64位Linux二进制文件的依赖性目标= X86_64-Linux-gnu。
- 依赖目标= 64位Windows二进制文件的目标= X86_64-W64-MINGW32。
- 要求:G ++ -MINGW-W64-X86-64
- 您还需要运行:
update-alternatives --set x86_64-w64-mingw32-g++ $( which x86_64-w64-mingw32-g++-posix ) && \\ update-alternatives --set x86_64-w64-mingw32-gcc $( which x86_64-w64-mingw32-gcc-posix )
- 用于Intel Macos二进制文件的依赖性目标= X86_64-APPLE-DARWIN。
- 要求:叮当
- 依赖目标= Apple Silicon Macos二进制文件的ARM64-APPLE-DARWIN。
- 要求:叮当
- 用于32位Linux二进制文件的依赖性目标= i686-linux-gnu。
- 要求:G ++ -Multilib BC
- 对于32位Windows二进制文件,使依赖性目标= I686-W64-MINGW32。
- 要求:Python3 G ++ -MingW-W64-I686
- 使依赖性目标= ARMV7二进制文件的ARM-LINUX-GNUEABIHF。
- 要求:G ++ -Arm-linux-gnueabihf
- 对ARMV8二进制文件进行依赖的目标= AARCH64-LINUX-GNU。
- 要求:G ++ -Aarch64-linux-gnu
- RISC v 64位二进制文件的依赖性目标= riscv64-linux-gnu。
- 要求:g ++ -riscv64-linux-gnu
- 依赖目标= freebsd二进制文件= x86_64-innownown-freebsd。
- 要求:Clang-8
- 依赖目标= 32位Android二进制的ARM-LINUX-ANDROID
- 依赖目标= 64位android二进制
所需的软件包是APT上每个工具链的名称。根据您的发行版,它们可能具有不同的名称。依赖系统已在Ubuntu 18.04和20.04上进行了测试。
与使用MSYS相比,使用依赖依据也可能更容易在Windows上编译monero 。使用发行版(例如Ubuntu)激活Linux(WSL)的Windows子系统,安装APT Build-Ensenters,并按照上述所示的取决于步骤。
产生的二进制文件仍然动态链接LIBC。如果将二进制文件编译为当前分布,则可能不会在较旧的LIBC安装的旧分布上运行。
Trezor硬件钱包支持
如果您在trezor支持的情况下构建monero有问题,则可以通过设置use_device_trezor = off,例如,例如,
USE_DEVICE_TREZOR=OFF make release
有关更多信息,请查看Trezor SRC/Device_trezor/readme.md。
Guix构建
请参阅contry/guix/readme.md。
从包装中安装monero
免责声明:这些软件包不是该存储库的一部分,也不是该项目的贡献者维护的,因此,不要经过相同的审核过程来确保其信任度和安全性。
包装可用于
-
Debian Buster
请参阅Whonix/ monero -GUI存储库中的说明
-
Debian Bullseye和Sid
sudo apt install monero
Debian软件包跟踪器中的更多信息和版本。
-
Arch Linux(通过社区软件包):
sudo pacman -S monero -
尼克斯:
nix-shell -p monero -cli -
GUIXSD
guix package -i monero -
Gentoo monero覆盖
monero
emaint sync -r monero
echo \’*/*:: monero ~amd64\’ >> /etc/portage/package.accept_keywords
emerge net-p2p/ monero \”>emerge --noreplace eselect-repository eselect repository enable monero emaint sync -r monero echo \' */*:: monero ~amd64 \' >> /etc/portage/package.accept_keywords emerge net-p2p/ monero
-
Alpine Linux:
apk add monero -
macos(自制)
brew install monero -
Docker
monero .
# or build using a specific number of cores (reduce RAM requirement)
docker build –build-arg NPROC=1 -t monero .# either run in foreground
docker run -it -v / monero /chain:/home/ monero /.bit monero -v / monero /wallet:/wallet -p 18080:18080 monero# or in background
docker run -it -d -v / monero /chain:/home/ monero /.bit monero -v / monero /wallet:/wallet -p 18080:18080 monero \”># Build using all available cores docker build -t monero . # or build using a specific number of cores (reduce RAM requirement) docker build --build-arg NPROC=1 -t monero . # either run in foreground docker run -it -v / monero /chain:/home/ monero /.bit monero -v / monero /wallet:/wallet -p 18080:18080 monero # or in background docker run -it -d -v / monero /chain:/home/ monero /.bit monero -v / monero /wallet:/wallet -p 18080:18080 monero
-
构建需要3 GB空间。
-
等待一个小时或更长时间
您最喜欢的发行的包装将是可喜的贡献!
运行monero d
该构建将二进制文件放在bin/ sub-directory中的构建目录中,从中调用了cmake(默认情况下的存储库根)。在前景中运行:
./bin/ monero d
要列出所有可用选项,请运行./bin/ monero d -help。可以在命令行上或由 – config-file参数传递的配置文件中指定选项。要在配置文件中指定选项,请添加一个使用语法参数= value的行,其中参数名称是参数的名称,而没有领先的破折号,例如,log-level = 1。
在后台运行:
monero d.log –detach\”>
./bin/ monero d --log-file monero d.log --detach
要作为SystemD服务运行,请将monero D.Service复制到/etc/etc/systemd/system/and monero d.conf到/etc/。示例服务假设用户monero存在,其家庭是示例配置中指定的数据目录。
如果您在Mac上,则可能需要将-Max-Corrency 1选项添加到monero -Wallet-CLI,甚至可能是monero D,如果您崩溃了。
国际化
请参阅readme.i18n.md。
使用tor
与TOR有一个新的,仍然可以实验的整合。该功能允许同时通过IPv4连接 – IPv4用于继电器块和同行接收的中继交易,而TOR仅用于通过本地RPC收到的中继交易。这为周围节点(SYBIL)攻击提供了隐私和更好的保护。
虽然monero并非与TOR集成,但可以通过设置以下配置参数和环境变量来包裹它:
- -p2p-bind-ip 127.0.0.0.1在命令行或p2p-bind-ip = 127.0.0.1中, monero d.conf中以禁用在外部接口上的连接聆听。
- – 命令行上的no-igd或monero d.conf中的no-igd = 1禁用IGD(UPNP端口转发谈判),这对TOR毫无意义。
- dns_public = tcp或dns_public = tcp:// xxxx,其中xxxx是所需的DNS服务器的IP,以供DNS请求通过TCP,以便通过TOR路由。当未指定IP时, monero D使用SRC/COONMA/DNS_UTILS.CPP中定义的服务器的默认列表。
- Torsocks_allow_inbound = 1告诉扭矩允许monero d绑定到接口以接受钱包的连接。在某些Linux系统上,Torsocks允许默认情况下绑定到Localhost,因此设置此变量仅对于允许绑定到本地LAN/VPN接口允许允许钱包从远程主机连接。在其他系统上,本地钱包也可能需要。
- 请勿通过SystemD穿过Torsocks(有关详细信息,请参见UTILS/ SYSTEMD/ monero D.Service)。
- 如果您通过loopback ip(例如127.0.0.1:9050)将钱包与TOR守护程序一起使用,请使用 – 未经信任的daemon,除非它是您自己的隐藏服务。
示例命令行通过tor启动monero d:
DNS_PUBLIC=tcp torsocks monero d --p2p-bind-ip 127.0.0.1 --no-igd
助手脚本在贡献/ tor/ tor/ monero -over -tor.sh中。它假设已经安装了TOR,并以正确的配置运行Tor和monero 。
在尾巴上使用Tor
尾船具有非常限制的防火墙规则。因此,您还需要添加一个规则以允许此连接,此外还需要告诉Torsocks允许入站连接。完整示例:
monerod –p2p-bind-ip 127.0.0.1 –no-igd –rpc-bind-ip 127.0.0.1 \\
–data-dir /home/amnesia/Persistent/your/directory/to/the/blockchain\”>
sudo iptables -I OUTPUT 2 -p tcp -d 127.0.0.1 -m tcp --dport 18081 -j ACCEPT
DNS_PUBLIC=tcp torsocks ./ monero d --p2p-bind-ip 127.0.0.1 --no-igd --rpc-bind-ip 127.0.0.1 \\
--data-dir /home/amnesia/Persistent/your/directory/to/the/blockchain
修剪
截至2022年4月,完整的monero区块链文件约为130 GB。一个人可以存储约45 GB的修剪区块链。修剪的区块链只能为其他同行提供一部分历史链数据,但在功能上与完整的区块链相同。要使用修剪的区块链,最好启动与Prune-Blockchain的初始同步。但是,也可以使用monero -Blockchain-Prune工具修剪现有的区块链,或使用现有链的 – Prune-Blockchain monero D选项。如果存在现有的链条,则修剪将暂时需要磁盘空间来存储完整的和修剪的区块链。
有关更多详细信息,请参见monero Pedia中的“修剪”条目
调试
本节包含用于调试失败安装或monero遇到的问题的一般说明。首先,确保您正在运行由GitHub Repo构建的最新版本。
在UNIX系统上获取堆栈跟踪和核心转储
我们通常使用工具GDB(GNU调试器)来提供堆栈跟踪功能,并在崩溃或segfault的构建中提供核心转储。
- 使用GDB以获取停滞的构建的堆栈跟踪:
运行构建。
失速后,输入以下命令:
monero d`\”>
gdb /path/to/ monero d ` pidof monero d `
键入线程在GDB中应用所有BT以获取堆栈跟踪
- 但是,如果核心转储或segfaults:
输入命令行上的ULIMIT -C UNLIMITED,以启用核心转储的无限文件
输入Echo Core | sudo Tee/proc/sys/kernel/core_pattern阻止核心被其他工具劫持
运行构建。
当它沿着“分割故障(核心转储)”线的输出终止时,应在同一目录中与monero d同一目录中有一个核心转储文件。它可以仅命名为core,也可以命名为core.xxxx,上面附加了数字。
您现在可以使用GDB分析此核心转储,如下所示:
gdb /path/to/ monero d /path/to/dumpfile `
用BT打印堆栈跟踪
- 如果程序崩溃并由SystemD管理,则以下还可以获取该崩溃的堆栈跟踪:
coredumpctl -1 gdb
在GDB中运行monero :
键入GDB/PATH/TO/ monero D
通过-ARGS通过命令行选项,然后是相关参数
类型运行以运行monero D
分析内存损坏
有两种工具可用:
阿桑
用-d anisitize =在cmake标志上配置monero ,例如:
cd build/debug && cmake -D SANITIZE=ON -D CMAKE_BUILD_TYPE=Debug ../..
然后,您可以正常运行monero工具。性能通常会减半。
Valgrind
安装valgrind并以valgrind/path/to/ monero d的速度运行。这将非常慢。
LMDB
根据@Hyc调试可疑区块链腐败的说明
LMDB源中有一个MDB_STAT命令,可以打印有关数据库的统计信息,但并非常规构建。这可以通过以下命令构建:
cd ~ / monero /external/db_drivers/liblmdb && make
MDB_STAT -EA <区块链DIR>路径的输出将指示块,block_heights和block_info表中的不一致。
MDB_DUMP -S块的输出<Blockchain DIR>和MDB_DUMP -S BLOCK_INFO <BLOCE链DIR>路径的输出对于指示Blocks和Block_Info是否包含相同的键。
这些记录被倾倒为十六进制数据,其中第一行是密钥,第二行是数据。
已知问题
协议
基于插座
由于驱动monero基于插座的协议的性质,目前某些协议弱点是不可避免的。尽管这些弱点可以完全缓解这些弱点,但所需的努力(手段)可能无法证明目的是合理的。因此,如果您是monero节点操作员,请考虑采取以下预防措施:
- 在“安全”机器上运行monero d。如果操作安全性不是您的强项,则至少要拥有一台运行monero d的计算机,不要浏览网络,使用电子邮件客户端或在您的monero D机器上使用任何其他潜在有害应用程序。请勿在同一台计算机上单击链接或加载URL/MUA内容。这样做可能有可能利用接受“ Localhost”和“ 127.0.0.1”的命令中的弱点。
- 如果您打算托管一个公共“远程”节点,请使用 – 限制RPC启动monero d。这是必须的。
基于区块链
如果正确滥用,可以将某些区块链“功能”视为“错误”。因此,请考虑以下内容:
- 接收monero时,请注意,如果发件人当选为任意时间,则可以将其锁定,以防止您花费该monero ,直到锁定时间到期为止。您可能需要推迟在这样的交易上行动,直到解锁时间消失为止。为了了解这段时间,您可以考虑剩余的阻滞时间,直到在show_transfers命令中看到的解锁为止。
