Contract 0x843276e93d4e6d1904b4fcf5d82d1e238b444734

Contract Overview

Balance:
0 Ether
TxHash Block Age From To Value [TxFee]
0x70ac5a8febae728c52c528cb48a86d6f26ae2c216c103a3e464ca2867fa2ec6f480627266 days 18 hrs ago0xe7c39e34a2d772332ba6002db0cd7d397f486ad7 IN  0x843276e93d4e6d1904b4fcf5d82d1e238b4447340 Ether0.000120245
0x9159a0186bc29b6cb709f3243c5ea47f787fe619699290492f1d47ad1bce8568480627066 days 18 hrs ago0x874740f6f38da8d508bdb9372cf23d7fe3057871 IN  0x843276e93d4e6d1904b4fcf5d82d1e238b4447340 Ether0.0006639
0x0ac25542cd0cb5d841aa010566cb49be9c3417d077fb0f784cada2f52e17215d480626966 days 18 hrs ago0xbfa98efe1cb6ca6bbd7cf5f5595d99d9d805cfc1 IN  0x843276e93d4e6d1904b4fcf5d82d1e238b4447340 Ether0.0002551
0xb4cdb83e8bedffbfe7e764891bf1ec169d21c5acf9cacc604c7633a7a9fecff7480626766 days 18 hrs ago0xbfa98efe1cb6ca6bbd7cf5f5595d99d9d805cfc1 IN  0x843276e93d4e6d1904b4fcf5d82d1e238b4447340 Ether0.0002551
0xb834414a741406495ec969f785280127a517194836d711bf59e20198e45e5085480626366 days 18 hrs ago0xbfa98efe1cb6ca6bbd7cf5f5595d99d9d805cfc1 IN  0x843276e93d4e6d1904b4fcf5d82d1e238b4447340 Ether0.0002551
0x939bff91e54308867c56cc669546930525144f6d8f2da2013f6acb1da0ad06a3480626066 days 18 hrs ago0xbfa98efe1cb6ca6bbd7cf5f5595d99d9d805cfc1 IN  0x843276e93d4e6d1904b4fcf5d82d1e238b4447340 Ether0.0002551
0xec31b2e25de5dab8ad83eb2f0ddbbedff8cf531dc5889089c16837dc13cdea57480625866 days 18 hrs ago0xbfa98efe1cb6ca6bbd7cf5f5595d99d9d805cfc1 IN  0x843276e93d4e6d1904b4fcf5d82d1e238b4447340 Ether0.00025446
0x1b13cb16927279bf5e7bc7348950db9bfab25e902a0f41c7c0d220c4b7bb8819480625566 days 18 hrs ago0xbfa98efe1cb6ca6bbd7cf5f5595d99d9d805cfc1 IN  0x843276e93d4e6d1904b4fcf5d82d1e238b4447340 Ether0.0002551
0x9d6d63f464984c11a9fcca50288ada6fcfee84e122d568e84650d29b3ad43cc1480623266 days 19 hrs ago0xe7c39e34a2d772332ba6002db0cd7d397f486ad7 IN  0x843276e93d4e6d1904b4fcf5d82d1e238b4447340 Ether0.000120245
0xd4c4dc87dcc82d742b9fa3ee4ca03e29cf0b9dd1d5ff60aea936a18687f7c62d480622966 days 19 hrs ago0x874740f6f38da8d508bdb9372cf23d7fe3057871 IN  0x843276e93d4e6d1904b4fcf5d82d1e238b4447340 Ether0.0006639
0xfec2af3ce86cbbb8590bb9e3edc16f41b9b4f00de4a66c682954ba6401a1022c480622566 days 19 hrs ago0xbfa98efe1cb6ca6bbd7cf5f5595d99d9d805cfc1 IN  0x843276e93d4e6d1904b4fcf5d82d1e238b4447340 Ether0.0002551
0xd10946490096df7345783d85308641c7b07b5f21612b4b10ceda0fd11f252bdd480622366 days 19 hrs ago0xbfa98efe1cb6ca6bbd7cf5f5595d99d9d805cfc1 IN  0x843276e93d4e6d1904b4fcf5d82d1e238b4447340 Ether0.0002551
0x7b9009e3dd29adc13a0325a53b00b151176f92232851e44fcf78ad40a6e86a33480622166 days 19 hrs ago0xbfa98efe1cb6ca6bbd7cf5f5595d99d9d805cfc1 IN  0x843276e93d4e6d1904b4fcf5d82d1e238b4447340 Ether0.0002551
0x78b01c39109ec0f17c700028f955fccbc7435815788071c92afdf88b338dc166480622066 days 19 hrs ago0xbfa98efe1cb6ca6bbd7cf5f5595d99d9d805cfc1 IN  0x843276e93d4e6d1904b4fcf5d82d1e238b4447340 Ether0.0002551
0xc2f9817644c1c76263e83e819afff94bbbe477ab3133e5e66fa6e54a701d0088480621866 days 19 hrs ago0xbfa98efe1cb6ca6bbd7cf5f5595d99d9d805cfc1 IN  0x843276e93d4e6d1904b4fcf5d82d1e238b4447340 Ether0.00025446
0x9732dadbe24ae077cc3afa17181ef63a025f4d26bdd30e0a6e00677a36456ca2480621666 days 19 hrs ago0xbfa98efe1cb6ca6bbd7cf5f5595d99d9d805cfc1 IN  0x843276e93d4e6d1904b4fcf5d82d1e238b4447340 Ether0.0002551
0x48327c46ff62936d1925b87cc1e17bea936507c9cd1589c956d47176fec569fd480598166 days 19 hrs ago0xe7c39e34a2d772332ba6002db0cd7d397f486ad7 IN  0x843276e93d4e6d1904b4fcf5d82d1e238b4447340 Ether0.00015536
0x5b3f874a75edbfd01fef4775d753be6e4da5484c2cf6ab1694b1a24880989348480597966 days 19 hrs ago0xe7c39e34a2d772332ba6002db0cd7d397f486ad7 IN  0x843276e93d4e6d1904b4fcf5d82d1e238b4447340 Ether0.000156
0xdc6b52a731683eb2fc4ef579921a88ac50fbf392cc52aaccbf3ae784f02c3406480597766 days 19 hrs ago0xe7c39e34a2d772332ba6002db0cd7d397f486ad7 IN  0x843276e93d4e6d1904b4fcf5d82d1e238b4447340 Ether0.00015536
0x99f41f18d396ad02a4cbd4773d27017e5dc9ec938ec16261a41e21d52edeec54480597366 days 19 hrs ago0xe7c39e34a2d772332ba6002db0cd7d397f486ad7 IN  0x843276e93d4e6d1904b4fcf5d82d1e238b4447340 Ether0.000156
0xf355b634245766e5fa92fbf9b60f1502a0978a745dd6ed3021e9c168202eeb1e480597166 days 19 hrs ago0xe7c39e34a2d772332ba6002db0cd7d397f486ad7 IN  0x843276e93d4e6d1904b4fcf5d82d1e238b4447340 Ether0.0001656
0x93e0af63ddcfe7906db0b969601431e65cbeedbf06bb00c72bceb6f83daa8b58480590266 days 19 hrs ago0xe7c39e34a2d772332ba6002db0cd7d397f486ad7 IN  0x843276e93d4e6d1904b4fcf5d82d1e238b4447340 Ether0.000120245
0xe57d857983ce85f7bb463c78b9ba9d304d2ae735cc1101d3d984115d2d718810480590166 days 19 hrs ago0x874740f6f38da8d508bdb9372cf23d7fe3057871 IN  0x843276e93d4e6d1904b4fcf5d82d1e238b4447340 Ether0.0006639
0x8189f6c875d660e56bd36f8aaf91c9ad03bd438a51bf3c8ae2c74f6bd7bda113480589766 days 19 hrs ago0xbfa98efe1cb6ca6bbd7cf5f5595d99d9d805cfc1 IN  0x843276e93d4e6d1904b4fcf5d82d1e238b4447340 Ether0.0002551
0x0db17ff31290b435006a019bf11eae85aeb2702adb98c64c6001a12af0f4d800480589466 days 19 hrs ago0xbfa98efe1cb6ca6bbd7cf5f5595d99d9d805cfc1 IN  0x843276e93d4e6d1904b4fcf5d82d1e238b4447340 Ether0.0002551
[ Download CSV Export 

Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
Warning: The compiled contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) Solidity Compiler Bugs.

Contract Source Code Verified (Similar Match)
Note: This contract matches the deployed ByteCode of the Verified Source Code for Contract 0x01a3b550c255ba1548c5ffdaa3c1d2d2933c619c
Contract Name: BlendPublisher
Compiler Version: v0.4.24+commit.e67f0147
Optimization Enabled: Yes
Runs (Optimizer):  200


Contract Source Code
pragma solidity ^0.4.13;

contract BlendPublisher{

    struct StrategyHiddenState {
      uint32 date;
      bytes32 hiddenHash;
    }

    address public owner;
    bytes32 public name;      

    bytes32[] underlying;
    uint32 dateInit;                  

    bool isAlive;

    mapping(bytes32 => StrategyHiddenState) private hiddenStates;

    mapping(address=>bool) public delegatinglist;

    modifier onlyAuthorized(){
        require(isdelegatinglisted(msg.sender));
        _;
    }

    event newBlend(bytes32 name, uint32 date);
    event newHiddenRecord(uint32 indexed date, bytes32 hashRecord);
    event newBlendDiscloseRecord(uint32 indexed date, bytes32 currentPositionsHash, bytes32 currentUnderlyingPricesHash, uint64 currentIndexValue, bytes16 secret, bytes32 previousHiddenTransactionHash, bytes32 previousRevealTransactionHash);
    event newBlendBacktestRecord(uint32 indexed date, bytes32 positionsHash, bytes32 underlyingPricesHash, uint64 price, bytes32 previousBacktestTransactionHash);
    event Authorized(address authorized, uint timestamp);
    event Revoked(address authorized, uint timestamp);
 
    constructor(bytes32 _name, uint32 _date, bytes32[] _underlying) public{
        underlying = _underlying;
        owner = msg.sender;
        delegatinglist[owner] = true;
        name = _name;
        dateInit = _date;
        emit newBlend(_name, _date);
    }

    function authorize(address authorized) public onlyAuthorized {
        delegatinglist[authorized] = true;
        emit Authorized(authorized, now);
    }

    // also if not in the list..
    function revoke(address authorized) public onlyAuthorized {
        delegatinglist[authorized] = false;
        emit Revoked(authorized, now);
    }

    function authorizeMany(address[50] authorized) public onlyAuthorized {
        for(uint i = 0; i < authorized.length; i++) {
            authorize(authorized[i]);
        }
    }

    function isdelegatinglisted(address authorized) public view returns(bool) {
      return delegatinglist[authorized];
    }

    // to improve add a CRUX consensys mapping management to be able to find them all
    function getStrategyHiddenState(bytes32 hiddenHash)
      public
      onlyAuthorized
      constant
      returns(uint32, bytes32)
    {
      return(
        hiddenStates[hiddenHash].date,
        hiddenStates[hiddenHash].hiddenHash);
    }

    // the first iteration of the backtesting batch must match the one from the previous state
    function blendbacktest(uint32[] dates, bytes32[] positionsHashes, bytes32[] underlyingPricesHashes, uint64[] stratPrices, bytes32 previousBacktestTransactionHash) public onlyAuthorized {
      require(dates.length == positionsHashes.length);
      require(dates.length == underlyingPricesHashes.length);
      require(dates.length == stratPrices.length);
      for(uint i = 0; i < dates.length; i++) {
        emit newBlendBacktestRecord(dates[i], positionsHashes[i], underlyingPricesHashes[i], stratPrices[i], previousBacktestTransactionHash);
      }
    }

    function hashBacktestPositions(uint32 date, int64[] positions) public pure returns(bytes32) {
      return(sha256(abi.encodePacked(date,positions)));
    }

    function hashPositions(uint32 date, int64[] positions, bytes16 secretPath) public pure returns(bytes32) {
      return(sha256(abi.encodePacked(date,positions,secretPath)));
    }

    function hashRevealedPositions(uint32 date, int64[] positions) public pure returns(bytes32) {
      return(sha256(abi.encodePacked(date,positions)));
    }

    function hashUnderlyingPrices(uint32 date,int256[] underlyingPrices) public pure returns(bytes32) {
      return(sha256(abi.encodePacked(date,underlyingPrices)));
    }

    function addHiddenPosition(uint32 _date, bytes32 _hashRecord) public onlyAuthorized {
        StrategyHiddenState memory hiddenState = StrategyHiddenState({date:_date, hiddenHash:_hashRecord});
        hiddenStates[_hashRecord] = hiddenState;
        emit newHiddenRecord(_date, _hashRecord);
    }

    function deleteHiddenPosition(bytes32 recomputedHash) public onlyAuthorized {
        //bytes32 recomputedHash = sha256(abi.encodePacked(date,positions,secretPath));
        delete hiddenStates[recomputedHash];
    }

    function revealHiddenPosition(uint32 date, int64[] positions, bytes32 underlyingPricesHashes, uint64 stratPrice, bytes16 secret, bytes32 previousHiddenTransactionHash, bytes32 previousRevealTransactionHash) public onlyAuthorized {
        bytes32 recomputedHash = sha256(abi.encodePacked(date,positions,secret));
        StrategyHiddenState memory matchingHiddenState =  hiddenStates[recomputedHash];
        // the hidden position must have been submitted and be present in the map
        require(recomputedHash == matchingHiddenState.hiddenHash);
        bytes32 positionsHash = sha256(abi.encodePacked(date,positions));

        emit newBlendDiscloseRecord(date, positionsHash, underlyingPricesHashes, stratPrice, secret, previousHiddenTransactionHash, previousRevealTransactionHash);

        delete hiddenStates[recomputedHash];
    }

}

contract PriceFeeder{
    address public owner;
    bytes32 name;

    struct FeederState {
        uint32 previousDate;
        uint64 previousPrice;
        uint32 date;
        uint64 price;
    }

    event newPrice(uint32 indexed date, bytes32 indexed underlying, uint64 price);

    mapping(bytes32 => FeederState) public priceData;

    modifier onlyOwner(){
        require(msg.sender==owner);
        _;
    }

    constructor(bytes15 _name) public{
        owner = msg.sender;
        name = _name;
    }

    function updatePrice(bytes32 underlying, uint32 date, uint64 price, uint32 previousDate) onlyOwner public{
        FeederState storage state = priceData[underlying];
        state.previousDate = state.date;
        state.previousPrice = state.price;
        if (state.date != 0){
          // just a check that the update does not skip quotes
          require(previousDate == state.previousDate);
        }
        state.date = date;
        state.price = price;
        priceData[underlying] = state;
        emit newPrice(date, underlying, price);
    }


    function getState(bytes32 underlying) public constant returns (uint32 date, uint64 price, uint32 previousDate, uint64 previousPrice){
      FeederState storage record = priceData[underlying];
      return (record.date, record.price, record.previousDate, record.previousPrice);
    }

    function getDate(bytes32 underlying) public constant returns (uint32){
      FeederState storage record = priceData[underlying];
      return record.date;
    }

    function getPrice(bytes32 underlying) public constant returns (uint64){
      FeederState storage record = priceData[underlying];
      return record.price;
    }

    function getPreviousDate(bytes32 underlying) public constant returns (uint32){
      FeederState storage record = priceData[underlying];
      return record.previousDate;
    }

    function getPreviousPrice(bytes32 underlying) public constant returns (uint64){
      FeederState storage record = priceData[underlying];
      return record.previousPrice;
    }
}

library StrategyLib{
  /*-----------------------------------------------------------------------
  Publish historical performan of some strategy
  *date
  *underPrice,prevUnderPrice: price variation of the day
  *position: position of the day (taken the previous day)
  *stratPrice: strategy price of the day (taken the previous day)
  ------------------------------------------------------------------------*/
  event newRecord(bytes32 indexed name, uint32 indexed date, int256 stratVariation, uint64 prevStratPrice, uint64 stratPrice, uint64 truncatedStratPrice, uint64 prevUnderPrice, uint64 underPrice, int64 position,int category);
  event newBiRecord(bytes32 indexed name,uint32 indexed date,int256 stratVariation, uint64 prevStratPrice, uint64 stratPrice, uint64 truncatedStratPrice, uint64 prevUnderPrice, uint64 underPrice, int64 position, uint64 secondPrevUnderPrice, uint64 secondUnderPrice, int64 secondPosition, int category);
  event succinctBiRecord(uint32 indexed date, uint64 prevStratPrice, uint64 stratPrice, uint64 truncatedStratPrice,int category);
  event succinctBiUnder(uint64 prevUnderPrice, uint64 underPrice, int64 position, uint64 secondPrevUnderPrice, uint64 secondUnderPrice, int64 secondPosition);

  /*------------------------------------------------------------------------
  Backtesting functions
  -------------------------------------------------------------------------*/  
  function libbibatchbacktest(uint64 strategyInitPrice, uint32[] dates, uint64[] prices, uint64[] secondPrices, int64[] positions, int64[] secondPositions) public returns (uint64) {
       uint64 strategyPrice = strategyInitPrice;
       uint64 truncatedStrategyPrice;
       // the first element of the array is the initial state of the strategy
       for(uint8 i=1; i<dates.length; i++){
           // the position used here is the position taken the previous day
           int256 variation = calculateVariation(prices[i-1], prices[i], positions[i]) + calculateVariation(secondPrices[i-1], secondPrices[i], secondPositions[i]);
           uint64 prevStratPrice = strategyPrice;
           (strategyPrice,truncatedStrategyPrice) = calculateValue(variation, strategyPrice);
           //emit newBiRecord(name,dates[i],variation, prevStratPrice, strategyPrice, truncatedStrategyPrice, prices[0][i-1], prices[0][i], positions[0][i], prices[1][i-1], prices[1][i], positions[1][i],-1);           
           //emit succinctBiRecord(dates[i], strategyPrice, prices[i-1], prices[i], positions[i], secondPrices[i-1], secondPrices[i], secondPositions[i],-1);           
           emit succinctBiRecord(dates[i], prevStratPrice, strategyPrice, truncatedStrategyPrice,-1);
           emit succinctBiUnder(prices[i-1], prices[i], positions[i], secondPrices[i-1], secondPrices[i], secondPositions[i]);
           
           strategyPrice=truncatedStrategyPrice;
       }
       return strategyPrice;
 }

  /*------------------------------------------------------------------------
  Backtesting functions
  -------------------------------------------------------------------------*/
  function libbatchbacktest(bytes32 name, uint64 strategyInitPrice, uint32[] dates, uint64[] prices, int64[] positions) public returns (uint64) {
       uint64 strategyPrice = strategyInitPrice;
       uint64 truncatedStrategyPrice;
       // the first element of the array is the initial state of the strategy
       for(uint8 i=1; i<dates.length; i++){
           // the position used here is the position taken the previous day
           int256 variation = calculateVariation(prices[i-1], prices[i], positions[i]);
           uint64 prevStratPrice = strategyPrice;
           (strategyPrice,truncatedStrategyPrice) = calculateValue(variation, strategyPrice);
           emit newRecord(name,dates[i],variation, prevStratPrice, strategyPrice, truncatedStrategyPrice, prices[i-1], prices[i], positions[i],-1);
           strategyPrice=truncatedStrategyPrice;
       }
       return strategyPrice;
 }

  /*------------------------------------------------------------------------
  Publishing functions
  -------------------------------------------------------------------------*/
  // the position here given is the position for the day matching the date, taken on the previous day close
  function advance(bytes32 name, uint32 date, uint64 udlPreviousPrice, uint64 udlPrice, int64 position, uint64 stratPrice) public returns (uint64) {
    int256 variation = calculateVariation(udlPreviousPrice, udlPrice, position);
    uint64 newStrategyPrice;
    uint64 truncatedNewStrategyPrice;
    (newStrategyPrice,truncatedNewStrategyPrice) = calculateValue(variation,stratPrice);
    emit newRecord(name,date,variation, stratPrice, newStrategyPrice, truncatedNewStrategyPrice, udlPreviousPrice, udlPrice, position,1);

    return truncatedNewStrategyPrice;
  }

  function biAdvance(uint32 date, uint64[2] udlPreviousPrice, uint64[2] udlPrice, int64[2] position, uint64 stratPrice) public returns (uint64) {
    int256 variation = calculateVariation(udlPreviousPrice[0], udlPrice[0], position[0])+calculateVariation(udlPreviousPrice[1], udlPrice[1], position[1]);
    uint64 newStrategyPrice;
    uint64 truncatedNewStrategyPrice;
    (newStrategyPrice,truncatedNewStrategyPrice) = calculateValue(variation,stratPrice);
        
    emit succinctBiRecord(date, stratPrice, newStrategyPrice, truncatedNewStrategyPrice, 1);
    emit succinctBiUnder(udlPreviousPrice[0], udlPrice[0], position[0], udlPreviousPrice[1], udlPrice[1], position[1]);

    return truncatedNewStrategyPrice;
  }

/*------------------------------------------------------------------------
Compute the variation of price of index according to the last position EOD
----Arguments:
      pxPre : price of precedent open dat
      pxCur : price EOD
      lastPosit : last position EOD
----Return:
      (pxCur/pxPre)^(lastPosit)-1
-------------------------------------------------------------------------*/
 function calculateVariation(uint64 pxPre, uint64 pxCur, int64 lastPosit) internal pure returns (int256){
    int256 variation = int256(pxCur) - int256(pxPre);
    // to keep up the precision up to 32 digits
    variation *=  1e32;
    variation /=  pxPre;
    variation *=  int256(lastPosit);
    return variation;
 }


 function calculateValue(int256 variation, uint64 lastValue) internal pure returns (uint64,uint64){
    uint64 newStrategyPrice;
    uint64 truncatedNewStrategyPrice;

    int256 delta = int256(lastValue) * variation;
    //1e40 = 1e32*1e8 (precision for digits and position precision)
    delta/=1e40;
    newStrategyPrice=uint64(int256(lastValue) +delta);

    // we only keep 4 digits (when price precision to 8)
    truncatedNewStrategyPrice = newStrategyPrice/1e4;
    truncatedNewStrategyPrice = truncatedNewStrategyPrice*1e4;
    return (newStrategyPrice,truncatedNewStrategyPrice);
 }

 // for precisition 12
 //function calculateValue(int256 variation, uint64 lastValue) internal pure returns (uint64,uint64){
 //   uint64 newStrategyPrice;
 //   uint64 truncatedNewStrategyPrice;
//
 //   int256 delta = int256(lastValue) * variation;
 //   //1e44 = 1e32*1e12 (precision for digits and position precision)
 //   delta/=1e44;
 //   newStrategyPrice=uint64(int256(lastValue) +delta);
//
 //   // we only keep 4 digits (when price precision to 12)
 //   truncatedNewStrategyPrice = newStrategyPrice/1e8;
 //   truncatedNewStrategyPrice = truncatedNewStrategyPrice*1e8;
 //   return (newStrategyPrice,truncatedNewStrategyPrice);
 //}

 function hashPosition(uint32 date, int64 position, bytes16 secretPath) public pure returns(bytes32) {
    return(sha256(abi.encodePacked(date,position,secretPath)));
 }
}

Contract ABI
[{"constant":true,"inputs":[{"name":"date","type":"uint32"},{"name":"positions","type":"int64[]"},{"name":"secretPath","type":"bytes16"}],"name":"hashPositions","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"date","type":"uint32"},{"name":"positions","type":"int64[]"},{"name":"underlyingPricesHashes","type":"bytes32"},{"name":"stratPrice","type":"uint64"},{"name":"secret","type":"bytes16"},{"name":"previousHiddenTransactionHash","type":"bytes32"},{"name":"previousRevealTransactionHash","type":"bytes32"}],"name":"revealHiddenPosition","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_date","type":"uint32"},{"name":"_hashRecord","type":"bytes32"}],"name":"addHiddenPosition","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"recomputedHash","type":"bytes32"}],"name":"deleteHiddenPosition","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"authorized","type":"address"}],"name":"isdelegatinglisted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"date","type":"uint32"},{"name":"positions","type":"int64[]"}],"name":"hashRevealedPositions","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"authorized","type":"address"}],"name":"revoke","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"authorized","type":"address[50]"}],"name":"authorizeMany","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"date","type":"uint32"},{"name":"underlyingPrices","type":"int256[]"}],"name":"hashUnderlyingPrices","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"authorized","type":"address"}],"name":"authorize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"date","type":"uint32"},{"name":"positions","type":"int64[]"}],"name":"hashBacktestPositions","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"hiddenHash","type":"bytes32"}],"name":"getStrategyHiddenState","outputs":[{"name":"","type":"uint32"},{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"dates","type":"uint32[]"},{"name":"positionsHashes","type":"bytes32[]"},{"name":"underlyingPricesHashes","type":"bytes32[]"},{"name":"stratPrices","type":"uint64[]"},{"name":"previousBacktestTransactionHash","type":"bytes32"}],"name":"blendbacktest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"delegatinglist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_name","type":"bytes32"},{"name":"_date","type":"uint32"},{"name":"_underlying","type":"bytes32[]"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"name","type":"bytes32"},{"indexed":false,"name":"date","type":"uint32"}],"name":"newBlend","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"date","type":"uint32"},{"indexed":false,"name":"hashRecord","type":"bytes32"}],"name":"newHiddenRecord","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"date","type":"uint32"},{"indexed":false,"name":"currentPositionsHash","type":"bytes32"},{"indexed":false,"name":"currentUnderlyingPricesHash","type":"bytes32"},{"indexed":false,"name":"currentIndexValue","type":"uint64"},{"indexed":false,"name":"secret","type":"bytes16"},{"indexed":false,"name":"previousHiddenTransactionHash","type":"bytes32"},{"indexed":false,"name":"previousRevealTransactionHash","type":"bytes32"}],"name":"newBlendDiscloseRecord","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"date","type":"uint32"},{"indexed":false,"name":"positionsHash","type":"bytes32"},{"indexed":false,"name":"underlyingPricesHash","type":"bytes32"},{"indexed":false,"name":"price","type":"uint64"},{"indexed":false,"name":"previousBacktestTransactionHash","type":"bytes32"}],"name":"newBlendBacktestRecord","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"authorized","type":"address"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"Authorized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"authorized","type":"address"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"Revoked","type":"event"}]

Contract Creation Code
608060405234801561001057600080fd5b50604051610f36380380610f3683398101604090815281516020808401519284015190930180519193909161004b91600291908401906100df565b5060008054600160a060020a0319163317808255600160a060020a0316815260056020908152604091829020805460ff191660019081179091558590556003805463ffffffff861663ffffffff19909116811790915582518681529182015281517fde6bcab5589c50e52961b5f6e606aa77b934e45595dddfd2b4d92d4ecfaac468929181900390910190a1505050610149565b82805482825590600052602060002090810192821561011c579160200282015b8281111561011c57825182556020909201916001909101906100ff565b5061012892915061012c565b5090565b61014691905b808211156101285760008155600101610132565b90565b610dde806101586000396000f3006080604052600436106100cc5763ffffffff60e060020a60003504166306fa9df981146100d157806306fdde031461015857806329ff42e11461016d5780633176e7341461020357806357ffd863146102245780635aaec2b11461023c5780636b6a08dc1461027157806374a8f103146102d15780638b9299dc146102f25780638da5cb5b1461033757806391d462d914610271578063b6a5d7de14610368578063c70cdad814610271578063d67a12d414610389578063d71d6cc5146103c1578063d82d8d03146104c3575b600080fd5b3480156100dd57600080fd5b5060408051602060046024803582810135848102808701860190975280865261014696843563ffffffff1696369660449591949091019291829185019084908082843750949750505092356fffffffffffffffffffffffffffffffff191693506104e492505050565b60408051918252519081900360200190f35b34801561016457600080fd5b50610146610609565b34801561017957600080fd5b5060408051602060046024803582810135848102808701860190975280865261020196843563ffffffff16963696604495919490910192918291850190849080828437509497505084359550505050602082013567ffffffffffffffff169160408101356fffffffffffffffffffffffffffffffff191691506060810135906080013561060f565b005b34801561020f57600080fd5b5061020163ffffffff60043516602435610918565b34801561023057600080fd5b506102016004356109b5565b34801561024857600080fd5b5061025d600160a060020a03600435166109e8565b604080519115158252519081900360200190f35b34801561027d57600080fd5b5060408051602060046024803582810135848102808701860190975280865261014696843563ffffffff1696369660449591949091019291829185019084908082843750949750610a069650505050505050565b3480156102dd57600080fd5b50610201600160a060020a0360043516610afc565b3480156102fe57600080fd5b506040805161064081810190925261020191369160049161064491908390603290839083908082843750939650610b6d95505050505050565b34801561034357600080fd5b5061034c610bb5565b60408051600160a060020a039092168252519081900360200190f35b34801561037457600080fd5b50610201600160a060020a0360043516610bc4565b34801561039557600080fd5b506103a1600435610c38565b6040805163ffffffff909316835260208301919091528051918290030190f35b3480156103cd57600080fd5b506040805160206004803580820135838102808601850190965280855261020195369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497505093359450610c729350505050565b3480156104cf57600080fd5b5061025d600160a060020a0360043516610d86565b60006002848484604051602001808463ffffffff1663ffffffff1660e060020a028152600401838051906020019060200280838360005b8381101561053357818101518382015260200161051b565b50505050905001826fffffffffffffffffffffffffffffffff19166fffffffffffffffffffffffffffffffff1916815260100193505050506040516020818303038152906040526040518082805190602001908083835b602083106105a95780518252601f19909201916020918201910161058a565b51815160209384036101000a600019018019909216911617905260405191909301945091925050808303816000865af11580156105ea573d6000803e3d6000fd5b5050506040513d60208110156105ff57600080fd5b5051949350505050565b60015481565b6000610619610d9b565b6000610624336109e8565b151561062f57600080fd5b60028a8a88604051602001808463ffffffff1663ffffffff1660e060020a028152600401838051906020019060200280838360005b8381101561067c578181015183820152602001610664565b50505050905001826fffffffffffffffffffffffffffffffff19166fffffffffffffffffffffffffffffffff1916815260100193505050506040516020818303038152906040526040518082805190602001908083835b602083106106f25780518252601f1990920191602091820191016106d3565b51815160209384036101000a600019018019909216911617905260405191909301945091925050808303816000865af1158015610733573d6000803e3d6000fd5b5050506040513d602081101561074857600080fd5b50516000818152600460209081526040918290208251808401909352805463ffffffff168352600101549082018190529194509250831461078857600080fd5b60028a8a604051602001808363ffffffff1663ffffffff1660e060020a028152600401828051906020019060200280838360005b838110156107d45781810151838201526020016107bc565b50505050905001925050506040516020818303038152906040526040518082805190602001908083835b6020831061081d5780518252601f1990920191602091820191016107fe565b51815160209384036101000a600019018019909216911617905260405191909301945091925050808303816000865af115801561085e573d6000803e3d6000fd5b5050506040513d602081101561087357600080fd5b505160408051828152602081018b905267ffffffffffffffff8a16818301526fffffffffffffffffffffffffffffffff19891660608201526080810188905260a08101879052905191925063ffffffff8c16917f756b7553fd87d278a8c234a19866a7072314faa86fa9835283e0d39abdaacc269181900360c00190a250506000908152600460205260408120805463ffffffff191681556001015550505050505050565b610920610d9b565b610929336109e8565b151561093457600080fd5b5060408051808201825263ffffffff84811680835260208084018681526000878152600483528690208551815463ffffffff191695169490941784555160019093019290925583518581529351929390927f5cbb9b977f6ba3858dec7910e4ff7fd7d856d4c9157c947ac0eeb3b8afa7de24929181900390910190a2505050565b6109be336109e8565b15156109c957600080fd5b6000908152600460205260408120805463ffffffff1916815560010155565b600160a060020a031660009081526005602052604090205460ff1690565b600060028383604051602001808363ffffffff1663ffffffff1660e060020a028152600401828051906020019060200280838360005b83811015610a54578181015183820152602001610a3c565b50505050905001925050506040516020818303038152906040526040518082805190602001908083835b60208310610a9d5780518252601f199092019160209182019101610a7e565b51815160209384036101000a600019018019909216911617905260405191909301945091925050808303816000865af1158015610ade573d6000803e3d6000fd5b5050506040513d6020811015610af357600080fd5b50519392505050565b610b05336109e8565b1515610b1057600080fd5b600160a060020a038116600081815260056020908152604091829020805460ff191690558151928352429083015280517f713b90881ad62c4fa8ab6bd9197fa86481fc0c11b2edba60026514281b2dbac49281900390910190a150565b6000610b78336109e8565b1515610b8357600080fd5b5060005b6032811015610bb157610ba9828260328110610b9f57fe5b6020020151610bc4565b600101610b87565b5050565b600054600160a060020a031681565b610bcd336109e8565b1515610bd857600080fd5b600160a060020a038116600081815260056020908152604091829020805460ff191660011790558151928352429083015280517fb39b5f240c7440b58c1c6cfd328b09ff9aa18b3c8ef4b829774e4f5bad0394169281900390910190a150565b600080610c44336109e8565b1515610c4f57600080fd5b50506000908152600460205260409020805460019091015463ffffffff90911691565b6000610c7d336109e8565b1515610c8857600080fd5b8451865114610c9657600080fd5b8351865114610ca457600080fd5b8251865114610cb257600080fd5b5060005b8551811015610d7e578581815181101515610ccd57fe5b9060200190602002015163ffffffff167f1d160f443ef196555adcf5fdc6f5a8072686e5c4bfc8685240106ced4170089c8683815181101515610d0c57fe5b906020019060200201518684815181101515610d2457fe5b906020019060200201518685815181101515610d3c57fe5b6020908102909101810151604080519485529184019290925267ffffffffffffffff9091168282015260608201869052519081900360800190a2600101610cb6565b505050505050565b60056020526000908152604090205460ff1681565b6040805180820190915260008082526020820152905600a165627a7a7230582030bdbd448cc5746d4274745112edbe69d83648e0cd073215c2f41cc5af1473cf0029424c454e445f4e4b595f31000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005c08668000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000003535452415434000000000000000000000000000000000000000000000000000053545241545f4e4b595f445f310000000000000000000000000000000000000053545241545f4e4b595f445f3200000000000000000000000000000000000000


   Swarm Source:
bzzr://30bdbd448cc5746d4274745112edbe69d83648e0cd073215c2f41cc5af1473cf
Block Age Transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward