The aim of this text is to describe how to quickly obtain some amount of Grams. 1. Proof-of-Work Giver smart contracts ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Extra small givers (deliver per 100 Grams): EQCfwe95AJDfKuAoP1fBtu-un1yE7Mov-9BXaFM3lrJZwqg_ EQBoATvbIa9vA7y8EUQE4tlsrrt0EhSUK4mndp49V0z7Me3M EQAV3tsPXau3VJanBw4KCFaMk3l_n3sX8NHZNgICFrR-9EGE EQAR9DvLZMHo9FAVMHI1vHvL7Fi7jWgjKtUARZ2S_nopQRYz EQC10L__G2SeEeM2Lw9osGyYxhoIPqJwE-8Pe7728JcmnJzW EQDZJFkh12kw-zLGqKSGVDf1V2PRzedGZDFDcFml5_0QerST EQCiLN0gEiZqthGy-dKl4pi4kqWJWjRzR3Jv4jmPOtQHveDN EQDB8Mo9EviBkg_BxfNv6C2LO_foJRXcgEF41pmQvMvnB9Jn EQAidDzp6v4oe-vKFWvsV8MQzY-4VaeUFnGM3ImrKIJUIid9 EQAFaPmLLhXveHcw3AYIGDlHbGAbfQWlH45WGf4K4D6DNZxY Small givers (deliver per 1000 Grams): EQDSGvoktoIRTL6fBEK_ysS8YvLoq3cqW2TxB_xHviL33ex2 EQCvMmHhSYStEtUAEDrpV39T2GWl-0K-iqCxSSZ7I96L4yow EQBvumwjKe7xlrjc22p2eLGT4UkdRnrmqmcEYT94J6ZCINmt EQDEume45yzDIdSy_Cdz7KIKZk0HyCFIr0yKdbtMyPfFUkbl EQAO7jXcX-fJJZl-kphbpdhbIDUqcAiYcAr9RvVlFl38Uatt EQAvheS_G-U57CE55UlwF-3M-cc4cljbLireYCmAMe_RHWGF EQCba5q9VoYGgiGykVazOUZ49UK-1RljUeZgU6E-bW0bqF2Z EQCzT8Pk1Z_aMpNukdV-Mqwc6LNaCNDt-HD6PiaSuEeCD0hV EQDglg3hI89dySlr-FR_d1GQCMirkLZH6TPF-NeojP-DbSgY EQDIDs45shbXRwhnXoFZg303PkG2CihbVvQXw1k0_yVIqxcA Medium givers (deliver per 10000 Grams): EQD7VspHSNS4VSpN7QQicNgSYoJ68CmdC6oL5ZEKHSXe26Sa EQC5uEgW0MkTbCRBZB72maxCZT3m14OK2FcSLVr2H_7MTTSF EQC2nD9nQNRhcfWhdBzRK-wdlTO4hGxnPFzdSxKN777tab2_ EQAqd4vV0O5oGfA7bl6fVORD_Y4PTNZG82AC2BObBux51g2w EQDcOxqaWgEhN_j6Tc4iIQNCj2dBf9AFm0S9QyouwifYo9KD EQAjYs4-QKve9gtwC_HrKNR0Eaqhze4sKUmRhRYeensX8iu3 EQBGhm8bNil8tw4Z2Ekk4sKD-vV-LCz7BW_qIYCEjZpiMF6Q EQCtrloCD9BHbVT7q8aXkh-JtL_ZDvtJ5Y-eF2ahg1Ru1EUl EQCWMIUBrpwl7OeyEQsOF9-ZMKCQ7fh3_UOvM2N5y77u8uPc EQD_71XLqY8nVSf4i5pqGsCjz6EUo2kQEEQq0LUAgg6AHolO Large givers (deliver per 100000 Grams): EQDUIeTNcRUqsz4bugyWl4q4vg16PN2EwiyyAIEbf7_WJZZH EQC4qKAIM0Od4RFG-4MAY0dJ3j4Wrcs0jc1XeWKJURYB9KSz EQC0Ssi1gl0IQKEGsCp91NeiTThdMqCzYvlX9sVLEU97rWqL EQDO2_2zkIJPqBKeE_P1VvDYOJi1vGPgiKo0Aa6Z-bY7BeuG EQADEy4zcVl-ADNMISdYSs5cVjJcHmwC9_phXXjqNKgME7j6 EQDWELx3CYohD9sIjhyEIhP915kL_3XthqruCbmcB0YTWDqQ EQDdoh2hzGFHdQtiXJNPNrwA8yIGd4-sFxyuEr3z6JL5BIFi EQALXKp6G-IjWTPEqFKILkqcql-43DcoPzJ21Z02abpBPaQK EQBAHXFxs1ohHY2bzW9A-V0NDznkFlROkNF_oyppxlLfsyEJ EQCUwgBew9u4NwwuFsfPsXX9a69K55uFcieaHtc-c37OYDJO You should randomly choose one of these "proof-of-work giver" smart contracts and obtain Grams from this smart contract by a procedure similar to "mining". 2. The "mining" process ~~~~~~~~~~~~~~~~~~~~~~~ In order to create an internal message containing the "proof of work", you should run a special "mining" utility, compiled from the TON sources located in the GitHub repository. The utility is located in file './crypto/pow-miner' with respect to the build directory, and can be compiled by typing 'make pow-miner' in the build directory. However, before running "pow-miner", you need to know the actual values of "seed" and "complexity" parameters of the chosen "proof-of-work giver" smart contract. This can be done by invoking get-method "get_pow_params" of this smart contract. For instance, if you use giver smart contract [REPLACE_GIVER_ADDRESS], you can simply type: > runmethod EQDB8Mo9EviBkg_BxfNv6C2LO_foJRXcgEF41pmQvMvnB9Jn get_pow_params in the LiteClient console and obtain output like: ... arguments: [ 101616 ] result: [ 738612284611544011373047821096971067922 23489402270226944118054888247274316293047103043398597210343339891935 100000000000 256 ] remote result (not to be trusted): [ 738612284611544011373047821096971067922 23489402270226944118054888247274316293047103043398597210343339891935 100000000000 256 ] The two first large numbers in the "result:" line are the "seed" and the "complexity" of this smart contract. In this example, the seed is 738612284611544011373047821096971067922 and the complexity is 23489402270226944118054888247274316293047103043398597210343339891935. Next, you invoke the pow-miner utility as follows: $ crypto/pow-miner -vv -w -t Here is the number of CPU cores that you want to use for mining, is the maximal amount of seconds that the miner would run before admitting failure, is the address of your wallet (possibly not initialized yet), either in the masterchain or in the workchain (note that you need a masterchain wallet to control a validator), and are the most recent values obtained by running get-method 'get-pow-params', is the address of the chosen proof-of-work giver smartcontract, and is the filename of the output file where the internal message with the proof of work will be saved in the case of success. For example, if your wallet address is UQCKrZeHQjhsT3E2MWwgSv0OLrbFomOzqTg0DIJGSLFjPWCf, you might run $ crypto/pow-miner -vv -w7 -t100 UQCKrZeHQjhsT3E2MWwgSv0OLrbFomOzqTg0DIJGSLFjPWCf 738612284611544011373047821096971067922 23489402270226944118054888247274316293047103043398597210343339891935 100000000000 EQDB8Mo9EviBkg_BxfNv6C2LO_foJRXcgEF41pmQvMvnB9Jn mined.boc The program will run for some time (at most 100 seconds in this case) and either terminate successfully (with zero exit code) and save the required proof of work into file "mined.boc", or terminate with a non-zero exit code if no proof of work was found. In the case of failure, you will see something like [ expected required hashes for success: 2147483648 ] [ hashes computed: 1192230912 ] and the program will terminate with a non-zero exit code. Then you have to obtain the "seed" and "complexity" again (because they may have changed in the meantime as a result of processing requests from more successful miners) and re-run the "pow-miner" with the new parameters, repeating the process again and again until success. In the case of success, you will see something like [ expected required hashes for success: 2147483648 ] 4D696E65005EFE49705690D2AACC203003DBE333046683B698EF945FF250723C0F73297A2A1A41E2F1A1F533B3BC4F5664D6C743C1C5C74BB3342F3A7314364B3D0DA698E6C80C1EA4ACDA33755876665780BAE9BE8A4D6385A1F533B3BC4F5664D6C743C1C5C74BB3342F3A7314364B3D0DA698E6C80C1EA4 Saving 176 bytes of serialized external message into file `mined.boc` [ hashes computed: 1122036095 ] Then you can use any TON software to send an internal message containing the proof of work cell extracted from mined.boc (sought data is located in mined.boc's first reference cell). You should send the result as soon as possible. If nobody has sent a valid proof of work with this *seed* and *complexity* before you, the proof-of-work giver will accept your proof of work and this will be reflected in the jetton balance of your wallet (10 or 20 seconds may elapse after sending the internal message before this happens). In the case of success, you will see that the jetton balance has been increased. In the case of failure, you will have to obtain the new "seed" and "complexity" and repeat the mining process from the very beginning. Now you are a happy owner of GRAM jettons that can be used for whatever purposes you had in mind. Congratulations!