MCPcopy Create free account
hub / github.com/DEROFDN/Engram / registerUsername

Function registerUsername

functions.go:1460–1517  ·  view source on GitHub ↗

Register a new DERO username

(s string)

Source from the content-addressed store, hash-verified

1458
1459// Register a new DERO username
1460func registerUsername(s string) (storage uint64, err error) {
1461 // Check first if the name is taken
1462 valid, _ := checkUsername(s, -1)
1463 if valid != "" {
1464 logger.Errorf("[Username] Error: skipping registration - username exists.\n")
1465 err = errors.New("username already exists")
1466 return
1467 }
1468
1469 scid := crypto.HashHexToHash("0000000000000000000000000000000000000000000000000000000000000001")
1470
1471 var args = rpc.Arguments{}
1472 args = append(args, rpc.Argument{Name: "entrypoint", DataType: "S", Value: "Register"})
1473 args = append(args, rpc.Argument{Name: "SC_ID", DataType: "H", Value: scid})
1474 args = append(args, rpc.Argument{Name: "SC_ACTION", DataType: "U", Value: uint64(rpc.SC_CALL)})
1475 args = append(args, rpc.Argument{Name: "name", DataType: "S", Value: s})
1476
1477 var p rpc.Transfer_Params
1478 var dest string
1479
1480 switch session.Network {
1481 case NETWORK_MAINNET:
1482 dest = "dero1qykyta6ntpd27nl0yq4xtzaf4ls6p5e9pqu0k2x4x3pqq5xavjsdxqgny8270"
1483 case NETWORK_SIMULATOR:
1484 dest = "deto1qyvyeyzrcm2fzf6kyq7egkes2ufgny5xn77y6typhfx9s7w3mvyd5qqynr5hx"
1485 default:
1486 dest = "deto1qy0ehnqjpr0wxqnknyc66du2fsxyktppkr8m8e6jvplp954klfjz2qqdzcd8p"
1487 }
1488 p.Transfers = append(p.Transfers, rpc.Transfer{
1489 Destination: dest,
1490 Amount: 0,
1491 Burn: 0,
1492 })
1493
1494 gp := rpc.GasEstimate_Params{SC_RPC: args, Ringsize: 2, Signer: engram.Disk.GetAddress().String(), Transfers: p.Transfers}
1495
1496 storage, err = getGasEstimate(gp)
1497 if err != nil {
1498 logger.Errorf("[Username] Error estimating fees: %s\n", err)
1499 return
1500 }
1501
1502 tx, err := engram.Disk.TransferPayload0(p.Transfers, 2, false, args, storage, false)
1503 if err != nil {
1504 logger.Errorf("[Username] Error while building transaction: %s\n", err)
1505 return
1506 }
1507
1508 err = engram.Disk.SendTransaction(tx)
1509 if err != nil {
1510 logger.Errorf("[Username] Error while dispatching transaction: %s\n", err)
1511 return
1512 }
1513
1514 logger.Printf("[Username] Username Registration TXID: %s\n", tx.GetHash().String())
1515
1516 return
1517}

Callers 1

layoutIdentityFunction · 0.85

Calls 2

checkUsernameFunction · 0.85
getGasEstimateFunction · 0.85

Tested by

no test coverage detected