Skip to content

nshbrown/blockchain-uuid-4-a100d

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WARNING This library is not maintained. Feel free to fork it and do as you please.

Ethereum UUID v4 Provider

Available @ 0xbb17fcd3f0be84478c4772cdb1035089aa36d4d1

Universal Unique Identifier (v4) generation. Gas cost of appriximately 80,000 gas per uuid.

https://en.wikipedia.org/wiki/Universally_unique_identifier

Contract ABI

[
    {
        "constant": false,
        "inputs": [],
        "name": "UUID4",
        "outputs": [
            {
                "name": "uuid",
                "type": "bytes16"
            }
        ],
        "type": "function"
    }
]

Solidity Interface

contract UUIDProvider {
    function UUID4() returns (bytes16 uuid);
}


contract ExampleContract {
    uuidProvider = UUIDProvider(0xbb17fcd3f0be84478c4772cdb1035089aa36d4d1);

    function doSomething() {
        var id = uuidProvider.UUID4();
        ...
    }
}

How it works

This contract uses available entropy sources like block hashes and timestamps to keep a local store of entropy to generate each UUID. It returns 16 byte values that are fully compliant with the uuid4 specification.

Compiling and Verifying

This was compiled using solc 0.2.1

$ solc --version
solc, the solidity compiler commandline interface
Version: 0.2.1-91a6b35f/Release-Darwin/unknown/int linked to libethereum-1.1.1-3d460fbb/Release-Darwin/unknown/int

It was compiled with the --optimize flag.

$ solc --optimize contracts/UUIDProvider.sol --bin --bin-runtime

======= UUIDProvider =======
Binary: 
606060405260008052600360209081527f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff805460ff191660019081179091555561007e6000600060006100976000805b61010081101561021c57438190034060008181526002602052604090205490925060ff16151561025057610218565b50610a29806104506000396000f35b600192505b505090565b915060008214156100ab5760009250610092565b5060005b602081101561008d5760008054600260018281161561010002600019018316919091049190820190839082908490601f8290106101415782601f1061017b575b826008026101000360020a80910402828001178355610192565b5081800160010183558181151161019257601f016020900481601f016020900483600052602060002091820191016101929190610167565b82601f10610109575082600052602060002080549082601f016020900481019061020d91905b808211156102185760008155600101610167565b60ff19168360005260206000205581800160010183555b505050919090908154600116156101b85790600052602060002090602091828204019190065b8154601f9190910361010090810a60ff8102199092167f0100000000000000000000000000000000000000000000000000000000000000808804810204929092029190911790915590920491506001016100af565b506100ef565b600091505b5090565b604080514281528151908190036020908101909120600081815260029092529190205490925060ff16151561025857610218565b60010161004f565b5a6040805191825280519182900360209081019092206000818152600290935291205490925060ff16151561028c57610218565b604080514481528151908190036020908101909120600081815260029092529190205490925060ff1615156102c057610218565b6040805132600160a060020a03166c01000000000000000000000000028152815190819003601401902060008181526002602052919091205490925060ff16151561030a57610218565b6040805133600160a060020a03166c01000000000000000000000000028152815190819003601401902060008181526002602052919091205490925060ff16151561035457610218565b6040805141600160a060020a03166c01000000000000000000000000028152815190819003601401902060008181526002602052919091205490925060ff16151561039e57610218565b604080514581528151908190036020908101909120600081815260029092529190205490925060ff1615156103d257610218565b604080513a81528151908190036020908101909120600081815260029092529190205490925060ff16151561040657610218565b604080516c01000000000000000000000000600160a060020a033016028152815190819003601401902060008181526002602052919091205490925060ff16151561021357610218566060604052361561008c5760e060020a600035046237aa3f811461008e57806331757f2e14610097578063352d2790146100a1578063479c92541461011a57806347ce07cc146101295780634b0bbf84146101875780634c8fe526146101995780635404bbf7146101ac57806360585358146101e357806361adeef41461023b578063fd30b1fb146102ab575b005b61030560015481565b6103056005545b90565b6103056000600060005b6003600050600084815260200190815260200160002060009054906101000a900460ff16156108a95760008314610966576005805460018101808355828183801582901161091d57600101600290048160010160029004836000526020600020918201910161091d91906104f8565b610305600454608060020a0281565b6040805160008054602060026001831615610100026000190190921691909104601f810182900482028401820190945283835261031793908301828280156103b05780601f10610385576101008083540402835291602001916103b0565b6103055b6000600060006105466101b0565b610305600454608060020a908190040281565b6103055b6000805b61010081101561069957438190034060008181526002602052604090205490925060ff1615156106cd57610538565b6103055b60008054600260018216156101000260001901909116819004108061022e575080546001805460029183161561010002600019019092160410801561022e5750620b71b05a115b156103c2576103b861018b565b6103056004355b77ff00000000000000ffffffffffffffffffffffffffffffff1916774000000000000000000000000000000000000000000000001775ff0000000000ffffffffffffffffffffffffffffffff191675800000000000000000000000000000000000000000001790565b6103056004356005805482908110156100025760009190915260028082047f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00191066010029150909054906101000a9004608060020a0281565b60408051918252519081900360200190f35b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156103775780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b820191906000526020600020905b81548152906001019060200180831161039357829003601f168201915b505050505081565b5060018054810190555b600080546002600182161561010002600019019091160411156104955760008054600260018216156101000260001990810190921604908101908110156100025781546001161561043a5790805260208082047f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5630191065b60008054925490911a60f860020a029250600260018316156101000260001990810184169190910490810192839190601f8290106104d25782601f1061050c575b826008026101000360020a80910402828001178355610523565b610002565b5081800160010183558181151161052357601f016020900481601f0160209004836000526020600020918201910161052391906104f8565b82601f1061049a575082600052602060002080549082601f016020900481019061052d91905b8082111561053857600081556001016104f8565b60ff19168360005260206000205581800160010183555b5061009e92505050565b5061047b565b600091505b5090565b600192505b505090565b9150600082141561055a5760009250610541565b5060005b602081101561053c5760008054600260001960018381161561010002919091018316919091049190820190839082908490601f8290106105f35782601f1061061d575b826008026101000360020a80910402828001178355610634565b5081800160010183558181151161063457601f016020900481601f0160209004836000526020600020918201910161063491906104f8565b82601f106105bb575082600052602060002080549082601f016020900481019061069391906104f8565b60ff19168360005260206000205581800160010183555b5050509190909081546001161561065a5790600052602060002090602091828204019190065b8154601f9190910361010090810a60ff81021990921660f860020a8088048102049290920291909117909155909204915060010161055e565b506105a1565b604080514281528151908190036020908101909120600081815260029092529190205490925060ff1615156106d557610538565b6001016101b4565b5a6040805191825280519182900360209081019092206000818152600290935291205490925060ff16151561070957610538565b604080514481528151908190036020908101909120600081815260029092529190205490925060ff16151561073d57610538565b60408051606060020a600160a060020a033216028152815190819003601401902060008181526002602052919091205490925060ff16151561077e57610538565b6040805133600160a060020a0316606060020a028152815190819003601401902060008181526002602052919091205490925060ff1615156107bf57610538565b6040805141600160a060020a0316606060020a028152815190819003601401902060008181526002602052919091205490925060ff16151561080057610538565b604080514581528151908190036020908101909120600081815260029092529190205490925060ff16151561083457610538565b604080513a81528151908190036020908101909120600081815260029092529190205490925060ff16151561086857610538565b6040805130600160a060020a0316606060020a028152815190819003601401902060008181526002602052919091205490925060ff16151561053357610538565b600083815260036020908152604091829020805460ff19166001179055815185815291517f9a76d01bc8e3b132d1b4b46fcd6fe15c8ba021e1cfcb92eb96b5abd05ffc03809281900390910190a1600480546fffffffffffffffffffffffffffffffff1916608060020a8504179055610541565b50505060009283526020909220600280830490910191066010028154608060020a87046101009290920a9182026fffffffffffffffffffffffffffffffff929092021916179055505b600454608060020a90819004026000146109a557600480546fffffffffffffffffffffffffffffffff8116909155608060020a908190040292506109db565b6109e06101e7565b600460106101000a8154816fffffffffffffffffffffffffffffffff0219169083608060020a900402179055505b6100ab565b60408051600454608060020a9081028252601082018490529151908190036011019020919350909150610a169080830402610242565b92506109ad608060020a8083040261024256
Binary of the runtime part: 
6060604052361561008c5760e060020a600035046237aa3f811461008e57806331757f2e14610097578063352d2790146100a1578063479c92541461011a57806347ce07cc146101295780634b0bbf84146101875780634c8fe526146101995780635404bbf7146101ac57806360585358146101e357806361adeef41461023b578063fd30b1fb146102ab575b005b61030560015481565b6103056005545b90565b6103056000600060005b6003600050600084815260200190815260200160002060009054906101000a900460ff16156108a95760008314610966576005805460018101808355828183801582901161091d57600101600290048160010160029004836000526020600020918201910161091d91906104f8565b610305600454608060020a0281565b6040805160008054602060026001831615610100026000190190921691909104601f810182900482028401820190945283835261031793908301828280156103b05780601f10610385576101008083540402835291602001916103b0565b6103055b6000600060006105466101b0565b610305600454608060020a908190040281565b6103055b6000805b61010081101561069957438190034060008181526002602052604090205490925060ff1615156106cd57610538565b6103055b60008054600260018216156101000260001901909116819004108061022e575080546001805460029183161561010002600019019092160410801561022e5750620b71b05a115b156103c2576103b861018b565b6103056004355b77ff00000000000000ffffffffffffffffffffffffffffffff1916774000000000000000000000000000000000000000000000001775ff0000000000ffffffffffffffffffffffffffffffff191675800000000000000000000000000000000000000000001790565b6103056004356005805482908110156100025760009190915260028082047f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00191066010029150909054906101000a9004608060020a0281565b60408051918252519081900360200190f35b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156103775780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b820191906000526020600020905b81548152906001019060200180831161039357829003601f168201915b505050505081565b5060018054810190555b600080546002600182161561010002600019019091160411156104955760008054600260018216156101000260001990810190921604908101908110156100025781546001161561043a5790805260208082047f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5630191065b60008054925490911a60f860020a029250600260018316156101000260001990810184169190910490810192839190601f8290106104d25782601f1061050c575b826008026101000360020a80910402828001178355610523565b610002565b5081800160010183558181151161052357601f016020900481601f0160209004836000526020600020918201910161052391906104f8565b82601f1061049a575082600052602060002080549082601f016020900481019061052d91905b8082111561053857600081556001016104f8565b60ff19168360005260206000205581800160010183555b5061009e92505050565b5061047b565b600091505b5090565b600192505b505090565b9150600082141561055a5760009250610541565b5060005b602081101561053c5760008054600260001960018381161561010002919091018316919091049190820190839082908490601f8290106105f35782601f1061061d575b826008026101000360020a80910402828001178355610634565b5081800160010183558181151161063457601f016020900481601f0160209004836000526020600020918201910161063491906104f8565b82601f106105bb575082600052602060002080549082601f016020900481019061069391906104f8565b60ff19168360005260206000205581800160010183555b5050509190909081546001161561065a5790600052602060002090602091828204019190065b8154601f9190910361010090810a60ff81021990921660f860020a8088048102049290920291909117909155909204915060010161055e565b506105a1565b604080514281528151908190036020908101909120600081815260029092529190205490925060ff1615156106d557610538565b6001016101b4565b5a6040805191825280519182900360209081019092206000818152600290935291205490925060ff16151561070957610538565b604080514481528151908190036020908101909120600081815260029092529190205490925060ff16151561073d57610538565b60408051606060020a600160a060020a033216028152815190819003601401902060008181526002602052919091205490925060ff16151561077e57610538565b6040805133600160a060020a0316606060020a028152815190819003601401902060008181526002602052919091205490925060ff1615156107bf57610538565b6040805141600160a060020a0316606060020a028152815190819003601401902060008181526002602052919091205490925060ff16151561080057610538565b604080514581528151908190036020908101909120600081815260029092529190205490925060ff16151561083457610538565b604080513a81528151908190036020908101909120600081815260029092529190205490925060ff16151561086857610538565b6040805130600160a060020a0316606060020a028152815190819003601401902060008181526002602052919091205490925060ff16151561053357610538565b600083815260036020908152604091829020805460ff19166001179055815185815291517f9a76d01bc8e3b132d1b4b46fcd6fe15c8ba021e1cfcb92eb96b5abd05ffc03809281900390910190a1600480546fffffffffffffffffffffffffffffffff1916608060020a8504179055610541565b50505060009283526020909220600280830490910191066010028154608060020a87046101009290920a9182026fffffffffffffffffffffffffffffffff929092021916179055505b600454608060020a90819004026000146109a557600480546fffffffffffffffffffffffffffffffff8116909155608060020a908190040292506109db565b6109e06101e7565b600460106101000a8154816fffffffffffffffffffffffffffffffff0219169083608060020a900402179055505b6100ab565b60408051600454608060020a9081028252601082018490529151908190036011019020919350909150610a169080830402610242565b92506109ad608060020a8083040261024256

About

UUID v4 Generation (Stable)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%