So, if you're ready to take on the challenge and showcase your skills, join us for the Luniverse NOVA Hackathon and let's build the future of Web3 together!
[6/4] D-Day
🔲오늘 해야할 것
- API 화면처리
- 프론트 배포 (HTTP)
- 프로젝트 설계 사진
- 데모영상 찍어야함.
IERC20 public immutable stakingToken;
IERC20 public immutable rewardsToken;
function lastTimeRewardApplicable() public view returns (uint) {
return _min(finishAt, block.timestamp);
}
function rewardPerToken() public view returns (uint) {
if (totalSupply == 0) {
return rewardPerTokenStored;
}
return
rewardPerTokenStored +
(rewardRate * (lastTimeRewardApplicable() - updatedAt) * 1e18) /
totalSupply;
}
function stake(uint _amount) external updateReward(msg.sender) {
require(_amount > 0, "amount = 0");
stakingToken.transferFrom(msg.sender, address(this), _amount);
balanceOf[msg.sender] += _amount;
totalSupply += _amount;
}
function withdraw(uint _amount) external updateReward(msg.sender) {
require(_amount > 0, "amount = 0");
balanceOf[msg.sender] -= _amount;
totalSupply -= _amount;
stakingToken.transfer(msg.sender, _amount);
}
function earned(address _account) public view returns (uint) {
return
((balanceOf[_account] *
(rewardPerToken() - userRewardPerTokenPaid[_account])) / 1e18) +
rewards[_account];
}
function getReward() external updateReward(msg.sender) {
uint reward = rewards[msg.sender];
if (reward > 0) {
rewards[msg.sender] = 0;
rewardsToken.transfer(msg.sender, reward);
}
}
function setRewardsDuration(uint _duration) external onlyOwner {
require(finishAt < block.timestamp, "reward duration not finished");
duration = _duration;
}
function notifyRewardAmount(
uint _amount
) external onlyOwner updateReward(address(0)) {
if (block.timestamp >= finishAt) {
rewardRate = _amount / duration;
} else {
uint remainingRewards = (finishAt - block.timestamp) * rewardRate;
rewardRate = (_amount + remainingRewards) / duration;
}
require(rewardRate > 0, "reward rate = 0");
require(
rewardRate * duration <= rewardsToken.balanceOf(address(this)),
"reward amount > balance"
);
finishAt = block.timestamp + duration;
updatedAt = block.timestamp;
}
function _min(uint x, uint y) private pure returns (uint) {
return x <= y ? x : y;
}
[6/3]
🔲오늘 해야할 것
showDailyGasfeeInCalendarView( userAddress ) :
- 일별 가스비 사용량을 달력뷰로 보여줍니다.
🔲지금 한 것
@GetMapping("/main")
public ResponseEntity<Object> getMain(HttpServletRequest request) throws IOException {
// 헤더에서 토큰 값 추출
//String address = (Jwts.parser().setSigningKey(secretKey).parseClaimsJws((request.getHeader("Authorization")).substring(7)).getBody()).getSubject();
//사용자의 트랜잭션을 luniverse api 호출을 통해 db에 저장합니다.
transactionService.saveRecentTransactionList("0xa41478514D57F828323E514dbf7D483646032f0A");
//사용자의 월별통계에 들어갈 정보를 반환합니다.
Map<String,Object> response=new HashMap<>();
//사용자의 달력에 노출될 정보를 반환합니다.
response.put("DailyGasfeeInCalendar",transactionService.getDailyGasfeeInCalendarView("0xa41478514D57F828323E514dbf7D483646032f0A"));
return new ResponseEntity<>(response, HttpStatus.OK);
}
//달력view에서 특정 일을 클릭하면 반환되는 dailyTnxsList입니다.
@GetMapping("/{date}")
public ResponseEntity<Object> getDailyTnxsList(HttpServletRequest request,@PathVariable LocalDate date){
//요청 헤더에서 jwt를 가져와 유저의 주소를 추출합니다.
String userAddress = (Jwts.parser().setSigningKey(secretKey).parseClaimsJws((request.getHeader("Authorization")).substring(7)).getBody()).getSubject();
Map<String,Object> response=new HashMap<>();
response.put("DailyTnxsList",transactionService.getDailyTransactionList(userAddress,date));
return new ResponseEntity<>(response, HttpStatus.OK);
}
[6/1]
🔲오늘 해야할 것
컨트랙트 사용회의
- SBT 어떤식으로 기획 입힐지?
🔲지금 한 것
saveRecentTransactionList( userAddress ) :
- 중복제거 해서 트랜잭션 정보 db 저장
🔲남은 것
showDailyTransactionList( userAddress )
1.db 저장되어 있는거 dto에 담아서 반환하는 함수 만들기
근데 이제 daily를 반환해야 하니까 daily를 판단할 수있게 하는 함수를 만들어서
해당 값 사이에 있는 정보들만 반환 할 수 있게 코드를 짜자.
2.회원가입이후 정보만 저장할 수 있게끔 로직 추가.
mapTnxsWithActivity( tnxsHash ) :
- 사용자가 직접 tnxs를 활동(swap, transfer, others ..)을 선택해서 저장하는 함수
-> 안해도 됌!!!!
배포
[5/30]
- 프로젝트 환경설정, 세팅
- DB 짜기
- domain class 작성
- API 구현을 위해 필요한 자료 조사
- tnsx을 보고 method를 알아낼 수 있는가?
- 사용해야 하는 API에서 필요한 준비물
- 토큰
- 어떤 함수를 날리는지
- 반환하는 결과물에서 어느 정보를 추출해야 하는지
'블록체인' 카테고리의 다른 글
[Hackathon](후기: 대회 1등을 했습니다😉) KYC dApp Project ( Multichain API, Webhook, Json RPC) (0) | 2023.06.05 |
---|---|
Tnxs 정보를 가공해서 "분기별 트렌드 리포트"를 제공해보자📒 (feat. dApp killing feature) (0) | 2023.05.27 |
[Digital Signiture] 암호화의 원리🔐 (0) | 2023.05.24 |
[Hackathon] NICO dApp Project (feat. Block Explorer, SBT, Community) (0) | 2023.05.22 |
[Hackathon] Backend DashBoard is underway👾 (2) | 2023.05.14 |