当前位置: 首页 > news >正文

solidity 数学和密码学函数

数学和密码学函数为开发者提供了一系列强大的工具,用于执行各种数学运算和加密操作

addmod(uint x, uint y, uint k) returns (uint)

计算 (x + y) % k,加法会在任意精度下执行,并且加法的结果即使超过 2**256 也不会被截取。

从 0.5.0 版本的编译器开始会加入对 k != 0 的校验(assert)。

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;contract AddModExample {// 使用 addmod 函数计算 (x + y) % k// 20 % 3 = 2// 3 * 6 = 18 // 20 - 18 function safeModAdd(  uint256 x,  uint256 y,  uint256 k ) public pure returns (uint256) {// require(k != 0, "Modulus cannot be 0"); // 确保模数 k 不为 0return addmod(x, y, k);}
}

mulmod(uint x, uint y, uint k) returns (uint)

计算 (x * y) % k,乘法会在任意精度下执行,并且乘法的结果即使超过 2**256 也不会被截取。

从 0.5.0 版本的编译器开始会加入对 k != 0 的校验(assert)。

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;contract AddModExample {// 使用 addmod 函数计算 (x + y) % k// 20 % 3 = 2// 3 * 6 = 18 // 20 - 18 function safeModAdd(  uint256 x,  uint256 y,  uint256 k ) public pure returns (uint256) {// require(k != 0, "Modulus cannot be 0"); // 确保模数 k 不为 0return mulmod(x, y, k);}
}

keccak256(bytes memory) returns (bytes32)

计算输入的 Keccak-256 哈希值。

备注

以前 keccak256 的别名叫 sha3 ,在 0.5.0 版本中被删除。

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;contract AddModExample {function safeModAdd( string  calldata _a ) public pure  returns (bytes32 ) {return keccak256(bytes(_a));}
}

ripemd160(bytes memory) returns (bytes20)

计算输入的 RIPEMD-160 哈希值。

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;contract AddModExample {function safeModAdd( string  calldata _a ) public pure  returns (bytes20 ) {return ripemd160(bytes(_a));}
}
http://www.lryc.cn/news/417274.html

相关文章:

  • opencv-图像透视变换
  • C++ 域
  • 安装Supervisor队列进程、管理 Laravel 队列进程
  • Windows入侵排查秘籍:锁死安全漏洞
  • 根据《广东省政务服务数字化条例》规定,政务服务数字化,是指将___广泛应用于政务服务,推动政务服务更加智能、便捷、高效的活动。()
  • git的基本操作和原理
  • Unity补完计划 之 SpriteRender
  • 数据结构第九讲:二叉树
  • 英伟达推出B200A瞄准OEM客群,预估2025年高端GPU出货量年增55%
  • Codeforces Round 962 (Div. 3)-补题
  • pandas的文本与序列化
  • 在企业级环境中部署Java程序:Docker命令实用指南
  • LabVIEW远程开发
  • 工作随记:我在OL8.8部署oracle rac遇到的问题
  • C++:vector容器
  • 深入理解 AWS CodePipeline
  • Qt:自定义钟表组件
  • 前端性能优化-web资源加载优先级
  • Docker-数据卷指令
  • Elasticsearch VS Typesense! Elasticsearch未来会被其它搜索引擎取代吗?
  • usb摄像头 按钮 静止按钮
  • SAP MM学习笔记 - 豆知识03 - 安全在库和最小安全在库,扩张物料的保管场所的几种方法,定义生产订单的默认入库保管场所,受注票中设定禁止贩卖某个物料
  • 激光导航AGV叉车那么多,究竟该怎么选?一篇文章讲明白~
  • redis面试(七)初识lua加锁脚本
  • 企元数智百年营销史的精粹:借鉴历史创造未来商机
  • Java @SpringBootTest注解用法
  • 构建智能招聘平台:人才招聘系统源码开发指南
  • Docker + Nacos + Spring Cloud Gateway 实现简单的动态路由配置修改和动态路由发现
  • Linux中多线程压缩软件 | Mingz
  • 【JavaEE精炼宝库】网络原理基础——UDP详解