Source Code
Overview
ETH Balance
0 ETH
More Info
ContractCreator
Multichain Info
N/A
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x59d61F06...d0c70A161 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
PoseidonPoseidonFullRoundKey0Column
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity Standard Json-Input format)
/*
Copyright 2019-2024 StarkWare Industries Ltd.
Licensed under the Apache License, Version 2.0 (the "License").
You may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.starkware.co/open-source-license/
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions
and limitations under the License.
*/
// SPDX-License-Identifier: Apache-2.0.
pragma solidity ^0.6.12;
contract PoseidonPoseidonFullRoundKey0Column {
function compute(uint256 x) external pure returns(uint256 result) {
uint256 PRIME = 0x800000000000011000000000000000000000000000000000000000000000001;
assembly {
// Use Horner's method to compute f(x).
// The idea is that
// a_0 + a_1 * x + a_2 * x^2 + ... + a_n * x^n =
// (...(((a_n * x) + a_{n-1}) * x + a_{n-2}) * x + ...) + a_0.
// Consequently we need to do deg(f) horner iterations that consist of:
// 1. Multiply the last result by x
// 2. Add the next coefficient (starting from the highest coefficient)
//
// We slightly diverge from the algorithm above by updating the result only once
// every 7 horner iterations.
// We do this because variable assignment in solidity's functional-style assembly results in
// a swap followed by a pop.
// 7 is the highest batch we can do due to the 16 slots limit in evm.
result :=
add(0x2574ea7cc37bd716e0ec143a2420103589ba7b2af9d6b07569af3b108450a90, mulmod(
add(0x712a2cab5d2a48c76a95de8f29a898d655cc216172a400ca054d6eb9950d698, mulmod(
add(0x7865d89fa1e9dce49da0ac14d7437366bd450fb823a4fd3d2d8b1726f924c8f, mulmod(
add(0x1b8c9c9cfe3c81279569f1130da6064cbf12c4b828d7e0cf60735514cf96c22, mulmod(
add(0x11eaccb2939fb9e21a2a44d6f1e0608aac4248f817bc9458cce8a56077a22b1, mulmod(
add(0x5f3e9a55edfd3f6abac770ff5606fca5aaf7074bedae94ade74395453235e8e, mulmod(
add(0x7ed6ec4a18e23340489e4e36db8f4fcebf6b6ebd56185c29397344c5deea4c8, mulmod(
result,
x, PRIME)),
x, PRIME)),
x, PRIME)),
x, PRIME)),
x, PRIME)),
x, PRIME)),
x, PRIME))
result :=
add(0x47da67f078d657e777a79423be81a5d41f445f9455b207ec9768858cfd134f1, mulmod(
result,
x, PRIME))
}
return result % PRIME;
}
}{
"metadata": {
"useLiteralContent": true
},
"libraries": {},
"remappings": [],
"optimizer": {
"enabled": true,
"runs": 1000000
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}Contract ABI
API[{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"compute","outputs":[{"internalType":"uint256","name":"result","type":"uint256"}],"stateMutability":"pure","type":"function"}]Contract Creation Code
0x608060405234801561001057600080fd5b506101f7806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80635ed86d5c14610030575b600080fd5b61004d6004803603602081101561004657600080fd5b503561005f565b60408051918252519081900360200190f35b60007f080000000000001100000000000000000000000000000000000000000000000180838181818181818181818181818f097f07ed6ec4a18e23340489e4e36db8f4fcebf6b6ebd56185c29397344c5deea4c801097f05f3e9a55edfd3f6abac770ff5606fca5aaf7074bedae94ade74395453235e8e01097f011eaccb2939fb9e21a2a44d6f1e0608aac4248f817bc9458cce8a56077a22b101097f01b8c9c9cfe3c81279569f1130da6064cbf12c4b828d7e0cf60735514cf96c2201097f07865d89fa1e9dce49da0ac14d7437366bd450fb823a4fd3d2d8b1726f924c8f01097f0712a2cab5d2a48c76a95de8f29a898d655cc216172a400ca054d6eb9950d69801097f02574ea7cc37bd716e0ec143a2420103589ba7b2af9d6b07569af3b108450a90019150808383097f047da67f078d657e777a79423be81a5d41f445f9455b207ec9768858cfd134f10191508082816101b957fe5b06939250505056fea2646970667358221220c9c00049f87114b146862ac7883690d53e5d81699ea9c3a42e8fd8cba70b9a8d64736f6c634300060c0033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80635ed86d5c14610030575b600080fd5b61004d6004803603602081101561004657600080fd5b503561005f565b60408051918252519081900360200190f35b60007f080000000000001100000000000000000000000000000000000000000000000180838181818181818181818181818f097f07ed6ec4a18e23340489e4e36db8f4fcebf6b6ebd56185c29397344c5deea4c801097f05f3e9a55edfd3f6abac770ff5606fca5aaf7074bedae94ade74395453235e8e01097f011eaccb2939fb9e21a2a44d6f1e0608aac4248f817bc9458cce8a56077a22b101097f01b8c9c9cfe3c81279569f1130da6064cbf12c4b828d7e0cf60735514cf96c2201097f07865d89fa1e9dce49da0ac14d7437366bd450fb823a4fd3d2d8b1726f924c8f01097f0712a2cab5d2a48c76a95de8f29a898d655cc216172a400ca054d6eb9950d69801097f02574ea7cc37bd716e0ec143a2420103589ba7b2af9d6b07569af3b108450a90019150808383097f047da67f078d657e777a79423be81a5d41f445f9455b207ec9768858cfd134f10191508082816101b957fe5b06939250505056fea2646970667358221220c9c00049f87114b146862ac7883690d53e5d81699ea9c3a42e8fd8cba70b9a8d64736f6c634300060c0033
Loading...
Loading
Loading...
Loading
Loading...
Loading
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.