[AD]MCO VISA 암호화폐로 결제하자

굳헬로의 스팀 프로그램 일기!! 열여덟번째 #18 스팀코인판 3대 조합의 임대내역과 실시간 예상 분배 금액을 웹으로 확인해보자!!

in sct •  8 months ago 

steem.jpg

일요일 잘 보내고 계신가요??

어느덧 저의 휴가가 막이 내리고 있네요.

일주일간 잘 쉬고, 잘 먹고, 잘 마시고, 잘 놀고 왔더니 내일 출근이라는게 꿈만 같군요.....

그래도 힘내서 오늘도 프로그램 일기 남겨 보겠습니다.


어제는 스팀코인판 조합의 조합계정에서 자동으로 토큰 클레임과 자동으로 분배가 되는 코드를 만들어 보았습니다.

오늘은 어제의 코드를 활용하여 조합원들이 실시간으로 분배량을 웹으로 확인할 수 있도록 하는 코드를 만들어 보았습니다.

웹 프로그래밍을 위해 PHP를 사용하여 데이터베이스로부터 조합원 데이터를 얻어오고, 파이썬으로 스팀엔진 API를 이용하여 조합계정의 잔고(balance + pending token)를 계산하여 본인의 지분율에 맞게 분배될 SCT 수량을 계산해서 보여줍니다.

그럼 코드를 살펴보도록 하겠습니다.
먼저 웹 페이지 PHP 코드입니다.

    $username = "team1p";
    $conn = mysqli_connect( $host,  $user, $passwd, $db_name);
    $query = "SELECT * FROM delegate WHERE to_='$username' && symbol='SCT' order by block_num desc";
    $result = mysqli_query($conn, $query);

    $delegate = array();
    $sum = 0;

    while($row = mysqli_fetch_array($result))
    {
         
        if( $row['sender'] == "lovelyyeon.sct" or $row['sender'] == "lovelyyeon.cur")
            $sender = "lovelyyeon";
        else if( $row['sender'] == "sonki999.sct")
            $sender = "sonki999";
        else if( $row['sender'] == "proof-of-work")
            $sender = "ukk";
        else if($row['sender'] == "jayplay.cur")
            $sender = "jayplayco";
        else if($row['sender'] == "photoholic")
            $sender = "oldstone";
        else
            $sender = $row['sender'];
        $delegate[$sender] = $delegate[$sender] + $row['quantity'];
        $sum = $sum + $row['quantity'];
    }

데이터베이스로부터 원피스 team1p 조합원들의 임대 내역을 가지고 와서 각 계정별로 임대합을 계산합니다.

exec("C:\Anaconda3\python.exe get_balance.py ".$username, $out, $status);

조합의 잔고(balance + pending_token)를 실시간으로 가져오기 위해 파이썬 프로그래밍을 호출합니다.

그럼 잠시 조합의 잔고를 확인하기 위한 파이썬 코드를 살펴보겠습니다.

def get_wallet(username, tokenname) :    
    wallet = Wallet(username)
    data = wallet.get_token(tokenname)
    return data

def get_pending_token(username, tokenname):    
    url = "http://scot-api.steem-engine.com/@" + username
    r = requests.get(url)
    result = r.json()
    #print(result)
    pending_token = result[tokenname]['pending_token']
    if tokenname == "SCT" :
        pending_token = pending_token / 1000
    return pending_token

if __name__ == "__main__":
    username = sys.argv[1]
    #username = "team1p"
    tokenname = "SCT"
    pending_token = get_pending_token(username, tokenname)
    print(pending_token)
    data = get_wallet(username, tokenname)
    print(data['balance'])

조합의 잔고를 가져오는 get_wallet() 함수와 pendingtoken 수량을 가져오는 get_pending_token() 함수를 조합계정명으로 호출합니다.

이제 그 결과를 웹 프로그램 PHP에서 받아서 사용을 하겠습니다.

    foreach($delegate as $key=>$value){
        echo "<tr>";
        echo "<td>";    echo $key; echo "</td>";        
        echo "<td>";    echo $value; echo "</td>";
        $ratio = round(($value / $sum * 100), 2);
        $sum_ratio = $sum_ratio + $ratio;
        echo "<td>";    echo $ratio; echo "%</td>";
        $divide = $bb / 100 * $ratio;
        //$divide = round($bb / 100 * $ratio, 0);
        $divide2 = floor($bb / 100 * $ratio);
        $sum_divide2 = $sum_divide2 + $divide2;
        echo "<td>$divide<br>소수점 절사 : $divide2</td>";
        echo "</tr>";
    }
    //echo "<br>임대 총합 : ".$sum;
    echo "<tr>";
    echo "<td>";    echo "계"; echo "</td>";
    echo "<td>";    echo $sum; echo "</td>";    
    echo "<td>$sum_ratio%</td>";
    echo "<td>$sum_divide2</td>";
    echo "</tr>";

조합원들의 임대량과 분배금액을 웹페이지의 테이블에 출력하는 코드입니다.

현재는 원피스 조합에 맞도록 수정되어 있는데, 각 조합에 맞는 분배 공식을 적용하면 될 것 같네요.

그 결과는

http://heinz.wo.tc/steemengine/delegate/get_delegate_team1p.php


멋지게 나왔네요.

그럼 이 코드를 유니온 조합과 나하풀 조합에도 적용해서 출력을 해보겠습니다.

$username에 team1p 대신 union.sct, naha.sct를 넣으면 됩니다.

저는 따로 웹페이지를 만들어 보았습니다.

union.sct 의 임대내역과 실시간 예상 분배량
http://heinz.wo.tc/steemengine/delegate/get_delegate_union.php

naha.sct 의 임대내역과 실시간 예상 분배량
http://heinz.wo.tc/steemengine/delegate/get_delegate_naha.php

현재 코드는 그냥 지분율에 따라 분배하는거라, 각 조합에서 분배 방식이 다르다면 결과는 많이 다를수도 있습니다.

일단은 제가 그냥 만들어 본거니 재미로 참고만 해주시면 좋겠습니다.

차 후 각 조합의 분배 방식을 정확히 알게되면 공식에 맞게 수정을 해보겠습니다.


오늘은 조합의 임대내역과 잔고를 계산하여 각 조합원들의 예상 분배량을 실시간으로 웹으로 확인하는 코드를 만들어 보았습니다.

사실 딱히 필요가 있을까 싶지만... 제 프로그래밍 공부에는 도움이 많이 된 것 같네요.

앞으로 활용할 수 있는 코드가 많이 나온 것 같습니다.

그럼 다음시간에도 이때까지 공부한 걸 활용하여 재미난 걸 도전해 보겠습니다.

그럼 행복한 일요일 저녁 보내시길 바랍니다.


굳헬로의 스팀 프로그램 일기!! 시리즈

#1 굳헬로의 스팀 프로그램 일기!! 대망의 시작 #1 Python 프로그램 설치 && steemengine 파이썬 api 설치 && 간단한 steemengine 예제

#2 굳헬로의 스팀 프로그램 일기!! 그 두번째 #2 비주얼 스튜디오 코드 프로그램 설치 && 비주얼 스튜디오 코드를 사용하여 파이썬 다루기 && 간단한 steemengine 예제

#3 굳헬로의 스팀 프로그램 일기!! 세번째 #3 스팀엔진 토큰의 정보를 가져오는 findOne() && 누군가의 토큰 사용 내역을 가져오는 get_history() && JSON 데이터 출력

#4 굳헬로의 스팀 프로그램 일기!! 네번째 #4 steemengine Token 클래스 && Token.get_holder() && Token.get_market_info() && Token.get_buy_book() && Token.get_sell_book()

#5 굳헬로의 스팀 프로그램 일기!! 다섯번째 #5 스팀엔진 블록을 뒤져서 원하는 정보를 찾아보자!! 스팀엔진 마켓 거래 내역을 뽑아내는 예제

#6 굳헬로의 스팀 프로그램 일기!! 여섯번째 #6 파이썬으로 스팀엔진 토큰들을 클레임 해보자.

#7 굳헬로의 스팀 프로그램 일기!! 일곱번째 #7 프로그램 일기도 어느덧 1주일!! 드디어 첫 실전!! 무한 반복 작업 수행하기!! 이제 직접 클레임 하는 손맛은 잊자. 무한 반복 자동 클레임!!

#8 굳헬로의 스팀 프로그램 일기!! 여덟번째 #8 텔레그램 봇을 이용해 알림을 받아보자!! && 무한 반복 자동 클레임의 정보를 텔레그램으로 받아보기!!

#9 굳헬로의 스팀 프로그램 일기!! 아홉번째 #9 무한 반복 자동 클레임 업그레이드!! && 토큰 잔고 확인 && 토큰 전송과 토큰 전송 내역을 텔레그램으로 받아보기!!

#10 굳헬로의 스팀 프로그램 일기!! 열번째 #10 토큰 전송내역을 검사하고, 토큰을 전송 받으면 텔레그램으로 알림을 받아보기!!

#11 굳헬로의 스팀 프로그램 일기!! 열한번째 #11 스팀엔진 토큰 임대내역 추적. 쉽지 않았던 머나먼 여정 (1/2)

#12 굳헬로의 스팀 프로그램 일기!! 열두번째 #12 스팀엔진 토큰 임대내역 추적. 쉽지 않았던 머나먼 여정 (2/2) 스팀엔진 토큰 임대내역 추적 완료!!

#13 굳헬로의 스팀 프로그램 일기!! 열세번째 #13 웹 프로그래밍의 시작!! 파이썬을 이용하여 정보를 MySQL 데이터 베이스에 저장해보기!!

#14 굳헬로의 스팀 프로그램 일기!! 열네번째 #14 파이썬을 이용하여 데이터베이스로부터 정보를 가져오기 && 스팀코인판 3대풀 임대내역 데이터베이스 작업 완료!!

#15 굳헬로의 스팀 프로그램 일기!! 열다섯번째 #15 웹 프로그래밍을 이용하여 스팀코인판 3대조합의 임대 내역을 웹으로 확인해보자 !!

#16 굳헬로의 스팀 프로그램 일기!! 열여섯번째 #16 스팀엔진 최신 블록을 검사하여 필요한 정보를 데이터베이스에 저장하기!! 3대 조합의 임대내역을 최신으로 저장하기!!

#17 굳헬로의 스팀 프로그램 일기!! 열일곱번째 #17 조합들이 필요한 기능 드디어 완성!! 자동 클레임과 자동 분배 기능!!

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

gfriend96님이 goodhello님을 멘션하셨습니당. 아래 링크를 누르시면 연결되용~ ^^
gfriend96님의 [Steemmonsters] Tounament STEEM prize Rank - 2019.08.05 11:00 KST(GMT+9)

...le="text-align:right">180 goodhello/td> 21 <td style="text-al...

Thank you for your continued support towards JJM. For each 1000 JJM you are holding, you can get an additional 1% of upvote. 10,000JJM would give you a 11% daily voting from the 700K SP virus707 account.

주말에 고생많으십니다.

짬짬히 취미로 하니 재미도 있고 좋은것 같아요~

오늘도 행복한 하루되세요 저에겐 너무 어렵네요 ㅎㅎ

기초부터 차근차근 하시면 금방입니다.

Hi @goodhello!

Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your UA account score is currently 4.015 which ranks you at #3887 across all Steem accounts.
Your rank has improved 341 places in the last three days (old rank 4228).

In our last Algorithmic Curation Round, consisting of 165 contributions, your post is ranked at #111.

Evaluation of your UA score:
  • Some people are already following you, keep going!
  • The readers like your work!
  • Try to work on user engagement: the more people that interact with you via the comments, the higher your UA score!

Feel free to join our @steem-ua Discord server

Congratulations @goodhello! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You published a post every day of the week

You can view your badges on your Steem Board and compare to others on the Steem Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

To support your work, I also upvoted your post!

Vote for @Steemitboard as a witness to get one more award and increased upvotes!