Solidity 中的哈希是什么?
Posted m0_73054711
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Solidity 中的哈希是什么?相关的知识,希望对你有一定的参考价值。
加密哈希函数是一种算法,它以任意数量的数据作为输入并生成固定大小的加密文本。即使输入的微小变化也会产生完全不同的输出。
Solidity 提供以下加密功能:
功能 | 特性 |
---|---|
keccak256(bytes memory) 返回 (bytes32) | 计算输入的 Keccak-256 哈希 |
sha256(bytes memory) 返回 (bytes32) | 计算输入的 SHA-256 哈希 |
ripemd160(bytes memory) 返回 (bytes20) | 计算输入的 RIPEMD-160 哈希 |
sha256(bytes memory) 返回 (bytes32) | 计算输入的 SHA-256 哈希 |
ecrecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) 返回(地址) | 从用于加密的椭圆曲线签名 中恢复与公钥关联的地址, 如果发生错误则返回零。这些参数对应于 ECDSA 签名值。 |
以太坊使用 Keccak 进行散列,这与 SHA_256 相似但不同。对于工作量证明,它使用了一种名为ethash的自定义方案,该方案旨在抗 ASIC。
示例:在下面的示例
// pragma version
pragma solidity ^0.6.6;
// Creating a contract
contract helloGeeks
// We want hash to be of 8 digits
// hence we store 10^8 which is
// used to extract first 8 digits
// later by Modulus
uint hashDigits = 8;
// Equivalent to 10^8 = 8
uint hashModulus = 10 ** hashDigits;
// Function to generate the hash value
function _generateRandom(string memory _str)
public view returns (uint)
// "packing" the string into bytes and
// then applying the hash function.
// This is then typecasted into uint.
uint random =
uint(keccak256(abi.encodePacked(_str)));
// Returning the generated hash value
return random % hashModulus;
中,创建了一个智能合约以将字符串作为输入并给出 8 位哈希作为输出。
输入:
极客换极客
输出:
—solidity中的HelloWord
区块链入门系列文章—solidity中的HelloWord
文章目录
前言
本系列教程将从零开始记入笔者学习区块链的过程,欢迎批评指正。
一、solidity是什么?
Solidity 的代码都涵盖在智能合约里面. 一个智能合约就是以太坊应用的最小单元, 所有的变量和函数都属于一个智能合约, 它是你所有应用的起点。
二、智能合约的HelloWorld
1.引入solidity版本
代码如下(示例):
pragma solidity ^0.4.19;
0.4.19代表的是你使用的solidity版本号,对应代码书写过程中一些语法规则每个版本都有可能不同,所以在写智能合约的时候,在第一行必须指定solidity的版本号。
2.编写空合约
代码如下(示例):
contract HelloWorld
contract修饰符代表此时你定义了一个智能合约,他的名字叫做HellWorld,所以区块链技术是不是也很简单?这样一行代码就已经完成了一个智能合约的编写。
练习时间
尝试定义一个智能合约,该合约名字为transfer,使用的solidity版本号为0.5.9
欢迎读者在评论区写下您的答案。
以上是关于Solidity 中的哈希是什么?的主要内容,如果未能解决你的问题,请参考以下文章