• w4_692559
  • 1.9MB
  • zip
  • 0
  • VIP专享
  • 0
  • 2022-04-21 10:21
neow3j:用于Neo区块链的Java / Kotlin / Android开发工具包 Neow3j是一个开发工具包,提供了简单可靠的工具,可以使用Java平台(支持Java,Kotlin和Android)构建Neo dApp和智能合约。 通过使用neow3j,您将很高兴与Neo一起玩并最终像一样出现neow's。 Neow3j是由社区开发并由维护的开源项目。 neow3j开发工具包包括: neow3j SDK neow3j devpack neow3j编译器 请访问 ,以获取有关neow3j和技术文档的更多信息。 使用neow3j SDK 要获得所有neow3j SDK功能
# neow3j-crypto This README aims to document some of the crypto mechanisms used by the NEO blockchain and standards. ## Curve NEO uses `secp256r1` as the elliptic curve for encryption. More info about `secp256r1` can be found here: * * * * ## Address Format Addresses on the NEO network are built based on the private-public key concept. For example, a valid NEO address is `AKYdmtzCD6DtGx16KHzSTKY8ji29sMTbEZ`. First of all, each address is associated to a scripthash (20 byte array). For example, the address `AKYdmtzCD6DtGx16KHzSTKY8ji29sMTbEZ` has the scripthash `295f83f83fc439f56e6e1fb062d89c6f538263d7` (hex). In order to build the scripthash, we need to get aware about [NEO opcodes]( since we should build a kind of script that executes instructions, and then hash it. Literally speaking, a scripthash is a "hashed set of instructions". The questions you might ask are: * How such scripthash is built? * How to transform an scripthash to an actual NEO address? To answer these questions, follow the steps: 1. Generate a public-private key pair. 2. Take the encoded public key of the public-private key pair. For example, the encoded public key for the address `AKYdmtzCD6DtGx16KHzSTKY8ji29sMTbEZ` is `0265bf906bf385fbf3f777832e55a87991bcfbe19b097fb7c5ca2e4025a4d5e5d6`, while the unencoded one is: `0465bf906bf385fbf3f777832e55a87991bcfbe19b097fb7c5ca2e4025a4d5e5d601d2ea55bbc8eb03bc449a2a1692c2521714ef31c7183ea098f27b7098e8981c`. 3. For a basic NEO address (i.e., not multi-signature), the scripthash should be formatted as follows (hex format): ``` 21 0265bf906bf385fbf3f777832e55a87991bcfbe19b097fb7c5ca2e4025a4d5e5d6 ac ``` where: * `21` represents the `PUSHBYTES33` opcode, that 33 bytes will be pushed in the next parameter; * `0265bf906bf385fbf3f777832e55a87991bcfbe19b097fb7c5ca2e4025a4d5e5d6` is the encoded public key (33 bytes); * and `ac` represents the `CHECKSIG` opcode, to verify that the witness who signed the transaction should use the correct corresponding private key. 4. Take the `210265bf906bf385fbf3f777832e55a87991bcfbe19b097fb7c5ca2e4025a4d5e5d6ac` raw script and first hash using [RIPEMD-160]( Take the result of the RIPEMD-160 hash and then hash using [SHA-256]( The result is the scripthash `295f83f83fc439f56e6e1fb062d89c6f538263d7`. 5. To transform an script hash to a NEO address, it's required to perform such steps: 5.1. First take the hex `17` representing the coin version and concatenate with the scripthash `295f83f83fc439f56e6e1fb062d89c6f538263d7`, resulting in `17295f83f83fc439f56e6e1fb062d89c6f538263d7` (hex format). 5.2. Then, it's required to compute the checksum of such concatenation by hashing it **twice** with [SHA-256]( In our example, the output is `ce9e45ea76472571d66d002a3726104015e656df78491cc6e9d3df4bf71bc13c`. The checksum is the first 4 bytes of the double SHA-256 output, which is `ce9e45ea`. 5.3. Finally, concatenate both parts resulting in the byte array `17295f83f83fc439f56e6e1fb062d89c6f538263d7ce9e45ea`. 5.4. Compute the [Base58]( of `17295f83f83fc439f56e6e1fb062d89c6f538263d7ce9e45ea` to get the NEO address `AKYdmtzCD6DtGx16KHzSTKY8ji29sMTbEZ`. ## Wallet and Account The wallet and accounts are implemented following the [NEP-6]( and [NEP-2](, respectively. ## Wallet Import Format (WIF) Same as the Bitcoin WIF format. Refer to the [Bitcoin documentation](