“ MMX – 快速、低成本、功能丰富、去中心化 – 具有实际货币的代币经济学”
一个从头开始编写的区块链,大多数事情都以不同的方式进行。
设计
- 由共识管理的可变代币供应(1 个区块 = 1 票)
- 高吞吐量 L1,具有一致的区块间隔(500 TPS,10 秒)
- 新颖的智能合约 VM,易于开发和高性能
- 节能的太空证明,带有可选的权益证明(仅限于 Tx 费用)
- 调整区块奖励以稳定价格,这是任何货币的关键属性
- 最低交易费用,允许大区块大小而无垃圾邮件
- 限制外部库的使用,以保持代码库的整洁和安全
- 没有预挖矿,没有 ICO,没有投资者
- 基于账户的模型
元素
- 高性能 C++ 代码(可轻松处理超过 1000 TPS)
- 交易尽可能并行执行
- 用于智能合约的自定义高级 VM
- 对变体、数组、映射和对象的原生支持
- 具有自动持久化和状态更新的统一内存
- 将 JavaScript 的受限子集编译为字节码
- 每行代码平均两条机器指令
- 原生代币支持(无需“批准”,NFT = 1 mojo)
- 基于智能合约报价的交易(固定价格、场外交易)
- 基于流动性池掉期的交易(AMM,多费用等级,类似于 Uniswap v3)
- 用于无缝集成的 ECDSA 签名(与比特币相同)
- 自定义区块链数据库引擎(比 RocksDB 或 LevelDB 整体快得多)
- 自适应 SHA256 VDF 控制区块间隔
- 功能丰富的节点,内置区块浏览器、钱包、市场、交换、RPC 等
路线图
释放 | 日期 | 描述 |
---|---|---|
测试网7 | 2022 年 9 月 | 完成。[1] |
测试网8 | 2022 年 10 月 | 完成。激励测试网,高度 25k-425k。[2] |
测试网9 | 2022 年 12 月 | 完成。激励测试网,高度 25k-1220k。[2] |
测试网10 | 2023 年 4 月 | 完成。激励测试网,高度 40k-3200k。[2] |
测试网11 | 2024 年 5 月 | 完成。新的绘图格式,抗压缩。 |
测试网12 | 2024 年 6 月 | 积极。激励测试网,高度 25k-TBD。[2] |
主网 | 待定 | 计划于 2024 年第 4 季度。 |
[1]在测试网上种植的硬币现在或将来一文不值。
[2]在激励测试网上每赢得一个区块,将在主网创世时获得 0.5 MMX 的固定奖励。
您需要安装“Microsoft Visual C++ Redistributable for Visual Studio 2022”并将其更新到最新版本。
向下滚动到“其他工具和可再发行组件:” https://visualstudio.microsoft.com/downloads/
Windows 可执行文件:https://github.com/madMAx43v3r/mmx-node/releases
Ubuntu Linux的:
sudo apt update
sudo apt install git cmake build-essential automake libtool pkg-config curl libminiupnpc-dev libjemalloc-dev libzstd-dev zlib1g-dev ocl-icd-opencl-dev clinfo screen
Arch Linux的:
sudo pacman -Syu
sudo pacman -S base-devel git cmake curl miniupnpc jemalloc zstd zlib opencl-headers ocl-icd clinfo screen
Fedora Linux的:
yum install kernel-devel git cmake automake libtool curl gcc gcc-c++ miniupnpc-devel jemalloc-devel ocl-icd-devel zlib-ng-devel zstd clinfo screen
注意:OpenCL 包是可选的,即。等。。。ocl-icd-opencl-dev
OpenCL 使用集成或专用 GPU 提供更快、更高效的 VDF 验证。
在低功耗笔记本电脑上使用 Intel 1165G7 和 96EU iGPU 的标准 iGPU 可以在大约 4 秒内以 48 MH/s 的 timelord 速度验证 VDF。有关更多信息,请参阅:VDF 验证需要哪种 GPU?
如果您没有快速的现代 (>4 GHz) CPU,则需要具有支持 OpenCL 的 GPU。
请确保位于 and 或 组(取决于发行版)中,以便能够访问 GPU:video
render
sudo adduser $USER video
sudo adduser $USER render
git clone https://github.com/madMAx43v3r/mmx-node.git
cd mmx-node
./update.sh
要更新到最新版本:
./update.sh
要切换到最新的测试网:
rm NETWORK
./update.sh
如果您怀疑某些文件可能无法正确构建,或者想要重新编译,请停止节点,然后运行:
./clean_all.sh
./update.sh
例如,在更新系统包时就需要这样做。
要在 Windows 上的 WSL 中设置 Ubuntu 20.04,您可以按照此处的教程进行操作:
https://docs.microsoft.com/en-us/learn/modules/get-started-with-windows-subsystem-for-linux/
确保在第 2 步中安装 Ubuntu:https://www.microsoft.com/store/p/ubuntu/9nblggh4msv6
然后在开始菜单中键入“Ubuntu”并启动它,系统会要求您设置用户和密码。 之后,您可以按照 Ubuntu 20.04 的正常说明进行操作。
要让 OpenCL 在 WSL 中工作:https://devblogs.microsoft.com/commandline/oneapi-l0-openvino-and-opencl-coming-to-the-windows-subsystem-for-linux-for-intel-gpus/
Docker 镜像有几种风格:ghcr.io/madmax43v3r/mmx-node
edge
:仅限最新提交 cpuedge-amd
:支持 amd gpu 的最新提交edge-nvidia
:支持 nvidia gpu 的最新提交
此外,每个 semver 标签都使用上面相同的三种风格生成标记图像: ,并且每个风格都有各自的后缀(例如)。 设置为最新的仅限 CPU 的 SEMVER 映像。<major>.<minor>.<patch>
<major>.<minor>
<major>
0.9.5-amd
latest
每个映像都提供了一个卷,您可以使用自己的卷或映射路径覆盖该卷,以自定义节点数据的存储位置。/data
A 对于仅 cpu 节点,可以如下所示:docker-compose.yml
version: '3'
services:
node:
image: ghcr.io/madmax43v3r/mmx-node:edge
restart: unless-stopped
volumes:
- /some/path/to/mmx/node/data:/data
有关 amd gpu 支持,请参阅以下内容:docker-compose.yml
version: '3'
services:
node:
image: ghcr.io/madmax43v3r/mmx-node:edge-amd
restart: unless-stopped
group_add:
- video
- render
devices:
- /dev/dri:/dev/dri
- /dev/kfd:/dev/kfd
volumes:
- /some/path/to/mmx/node/data:/data
注意:可能需要删除 in,具体取决于您的系统。- render
group_add
有关 nvidia gpu 支持,请参阅以下内容:docker-compose.yml
version: '3'
services:
node:
image: ghcr.io/madmax43v3r/mmx-node:edge-nvidia
restart: unless-stopped
runtime: nvidia
volumes:
- /some/path/to/mmx/node/data:/data
注意:对于 nvidia,您还需要在主机上安装 ,有关更多信息,请参阅:https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#dockerNVIDIA Container Toolkit
运行远程采集器是通过覆盖 Dockerfile 来完成的,例如:CMD
version: '3'
services:
harvester:
image: ghcr.io/madmax43v3r/mmx-node:edge
restart: unless-stopped
volumes:
- /some/path/to/mmx/node/data:/data
- /some/path/to/disks:/disks
command: './run_harvester.sh -n <some ip or hostname here>:11333'
要更改所有内容的存储路径,请将环境变量设置为 (需要尾部斜杠)。默认情况下,使用当前目录,即。.MMX_HOME
/your/path/
mmx-node
要继续进入 CLI 环境,请执行以下操作:
cd mmx-node
source ./activate.sh
mmx wallet create [-f filename]
文件名参数是可选的,默认情况下它是 ,它已包含在默认配置中。wallet.dat
要使用更多钱包,请将路径添加到 中的 数组中。key_files
config/local/Wallet.json
要创建具有已知种子哈希的钱包:
mmx wallet create <seed_hash> [-f filename]
要创建具有已知助记词种子的钱包:
mmx wallet create --mnemonic word1 word2 ... [-f filename]
要从钱包(节点/钱包已经运行)获取助记词种子:
mmx wallet get seed [-j index]
注意:需要重新启动 Node / Wallet 才能获取新钱包。
注意:或者,您现在可以在 GUI 中创建钱包:http://localhost:11380/gui/#/wallet/create
注意:配置文件的大小写很重要。
注意:任何配置更改都需要重启节点才能生效。
创建 / 编辑文件 :config/local/Farmer.json
{
"reward_addr": "mmx1..."
}
默认情况下,使用第一个钱包的第一个地址。
创建 / 编辑文件 :config/local/TimeLord.json
{
"reward_addr": "mmx1..."
}
创建 / 编辑文件 :config/local/Router.json
{
"fixed_peers": ["192.168.0.123", "more"]
}
echo true > config/local/timelord
要将区块链和数据库存储在自定义目录中,您可以设置环境变量(例如):MMX_DATA
export MMX_DATA=/mnt/mmx_data/
需要重新启动节点。(可选)可以将以前的文件夹复制到新路径(在停止节点后),以避免再次从头开始同步。testnetX
MMX_DATA
要获取用于绘图的 farmer 密钥,请执行以下操作:
mmx wallet keys [-j index]
节点需要运行才能使此命令正常工作。( 指定非默认钱包的索引)-j
通过 GUI,可以在 Wallet > Info 部分找到 farmer 密钥,请参阅:farmer_public_key
注: 在打印过程中,节点不需要运行(绘图仪甚至不需要 Internet 连接)。
在此处下载 CUDA 绘图仪: https://github.com/madMAx43v3r/mmx-binaries/tree/master/mmx-cuda-plotter
新格式不再有 CPU 绘图仪,因为它的效率太低了。任何旧的 Nvidia GPU 都可以,Maxwell 或更新版本。
完整 RAM 示例:./mmx_cuda_plot_k30 -C 5 -n -1 -t /mnt/tmp_ssd/ -d <dst> -f <farmer_key>
部分 RAM 示例:./mmx_cuda_plot_k30 -C 5 -n -1 -2 /mnt/tmp_ssd/ -d <dst> -f <farmer_key>
磁盘模式示例:./mmx_cuda_plot_k30 -C 5 -n -1 -3 /mnt/tmp_ssd/ -d <dst> -f <farmer_key>
用法与 Gigahorse (https://github.com/madMAx43v3r/chia-gigahorse/tree/master/cuda-plotter) 相同,只是没有 pool key。-p
如果您有一个快速的 CPU(passmark 基准测试> 5000 个点),则可以用于 HDD 图。-C 10
要创建 SSD 绘图(用于在 SSD 上耕作),请添加到命令并使用 。SSD 绘图的效率提高了 250%,但不能在 HDD 上耕种。它们需要耕种的 CPU 负载更高,因此建议绘制未压缩的 Plot。--ssd
-C 0
主网的最小 k 大小为 k29,测试网为 k26。从 testnet11 开始的 plot 可以在以后重新用于主网。
要添加 plot 目录,请在 中添加 array 的路径,例如:plot_dirs
config/local/Harvester.json
{
"plot_dirs": [
"/mnt/drive1/plots/",
"/mnt/drive2/plots/",
"C:/windows/path/example/"
]
}
默认情况下,目录是递归搜索的。要禁用递归搜索,可以设置为 in 。recursive_search
false
Harvester.json
由于上述原因,请避免添加根目录(例如 ),除非您的驱动器仅包含 plots。相反,创建一个文件夹并将所有绘图都放在其中(例如 )。H:\
H:\MMX Plots\
首先执行安装和设置步骤。
要为当前测试网运行节点:
./run_node.sh
如果您想帮助网络并接受传入连接,您可以在 TCP 端口 12341 上启用端口转发。
要为区块链、钱包文件等设置自定义存储路径:
export MMX_HOME=/your/path/
钱包文件将位于 ,其他所有内容都位于一个子文件夹中。默认情况下未设置,因此它是当前目录。MMX_HOME
testnetX
MMX_HOME
如果您的 Internet 连接速度较慢或希望总体上减少流量,则可以在 中减少连接数。 例如,要以建议的最小值运行:config/local/Router.json
{
"num_peers_out": 4,
"max_connections": 4
}
num_peers_out
是与同步对等体的最大传出连接数。 是最大连接总数。 请记住,这会增加您丢失同步的几率。max_connections
另一种更严厉的措施是通过设置为 in 来禁用将消息中继到其他节点。 但是,这会损害网络,因此请仅在绝对必要时禁用它。do_relay
false
config/local/Router.json
要在后台运行节点,您可以输入会话:screen
screen -S node
(start node as above)
<Ctrl+A> + D (to detach)
screen -r node (to attach again)
要从特定高度开始重新同步:。 或者在运行时:。 如果由于某种原因您从网络中分叉,则需要这样做。只需从您卡住的当前高度减去 500 或 1000 个方块即可。 要从头开始重新同步,请删除 和 中的 文件夹,或运行 。./run_node.sh --Node.replay_height <height>
mmx node revert <height>
block_chain.dat
db
testnetX
mmx node revert 0
停止节点后:
rm NETWORK
./update.sh
./run_node.sh
区块链数据现在默认存储在 folder 中。testnetX
要访问 WebGUI,请转到:http://localhost:11380/gui/
检查 $MMX_HOME/PASSWD 的登录密码,该密码是在首次启动时自动生成的。
仅在 localhost 上可用,因为可以完全访问您的钱包。